내가이 달성하기 위해 수행 한 작업은 다음과 같습니다 (
구성 요소의 상호 작용 사용을 https://angular.io/guide/component-interaction), mapComponent
안에 controlComponent
을 포함 시켰습니다. eventEmitter
을 사용하여 mapComponent
에게 무엇을해야하는지 알려줍니다 (MapComponent
내지도 관리를 통해 다른 controlComponent
을 사용할 수 있습니다).
MapComponent (HTML)
<app-control (add_a_place)="add_a_place($event)"> </app-control>
MapComponent (TS)
add_a_place(event) {
var draw_interaction = new ol.interaction.Draw({
source: vector_source,
type: "Point"
});
var map = new ol.Map({
target: "map",
layers: [vector_layer],
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
map.addInteraction(draw_interaction);
}
제어 성분 (HTML)
<button (click)="sendInfo()" type="button">Add a place</button>
JS :
export class VoterComponent {
// change 'any' to the desired type, this is optional
@Output() add_a_place= new EventEmitter<any>();
sendInfo() {
// this will call MapComponent's add_a_place function
this.add_a_place.emit('you can pass an argument of type "any" to the mapComponent, depending on the eventEmitter above, but this is optional');
}
질문이 있거나 명확하지 않은 경우 망설이지 마십시오. 이 경우 당신은 것, https://openlayers.org/en/latest/examples/custom-controls.html이
은 그러나 당신은 또한 컨트롤을 포함하는 overlayComponent
내부 MapComponent
을 포함 할 수있다 :
이
는 '각도 만든'컨트롤,하지만 당신은 또한 openlayers의 컨트롤을 추가 할 수 있습니다 볼의 포함을위한 논리입니다 구성 요소 상호 작용 로직을 되돌려 야합니다 (명확하지 않은 경우 무시하십시오).
지도 http : // openlayers에서 사용자 정의 컨트롤 만들기를 보여주는이 예제를 확인하십시오.org/ko/latest/examples/custom-controls.html? q = 컨트롤 –