如何在Leaflet.Control.Search中重用搜索结果?

时间:2019-06-06 18:37:41

标签: angular leaflet

我正在编码一个地图应用程序,该应用程序使用带有Nominatim地理编码器的Leaflet.Control.Search。

我的目标是提供一个功能,该功能将在找到位置后触发,该位置显示一个弹出窗口,允许用户生成报告。

这是我的map-canvas.component.ts:

ngOnInit() {
    this.map = L.map('lmap').setView([51.91, 19.14], 7);

    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
      attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(this.map);


      this.map.addControl(new L.Control.Search({
      url: 'https://nominatim.openstreetmap.org/search?format=json&q={s}',
      jsonpParam: 'json_callback',
      propertyName: 'display_name',
      propertyLoc: ['lat', 'lon'],
      marker: L.circleMarker([0, 0], { radius: 30 }),
      autoCollapse: true,
      autoType: false,
      minLength: 2
    }));

    this.mapLoaded.emit({ map: this.map, L: L });
  }

编辑:

将我的问题更改为与标题更匹配。

1 个答案:

答案 0 :(得分:0)

为此,可以利用s earch:locationfound事件

  

移动后触发并显示markerLocation

并以如下方式实例化弹出窗口:

controlSearch.on("search:locationfound", function(e) {
  const popup = L.popup({})
    .setLatLng(e.latlng)
    .setContent("Some content goes here...")
    .openOn(map);
});

Here is a demo