打开图层3搜索功能以查找地图位置?

时间:2015-12-02 16:49:13

标签: google-maps search openlayers-3

在OL3地图中实施搜索功能的最佳方法是什么?

我需要一个搜索输入,它会在搜索时向我显示一些选项,然后平移和缩放到特定搜索字词。非常像谷歌地图。

我是否需要将谷歌地图集成到我的OL3中?

2 个答案:

答案 0 :(得分:13)

Openlayers 3中没有原生搜索/地理编码器。但您可以使用ol-geocoder extension(我已经写过它)来满足这种需求。

说明在提供的链接中。我只想说明我一般如何使用它:

//Instantiate with some options and add the Control
var geocoder = new Geocoder('nominatim', {
  provider: 'google',
  lang: 'pt-BR',
  placeholder: 'Pesquise por um endereço',
  limit: 5,
  key: '....',
  keepOpen: false,
  debug: true
});
map.addControl(geocoder);

// I don't want/need Geocoder layer to be visible
geocoder.getLayer().setVisible(false);

//Listen when an address is chosen
geocoder.on('addresschosen', function(evt){
  var feature = evt.feature;
  var coord = evt.coordinate;

  // application specific
  app.addMarker(feature, coord);
});

答案 1 :(得分:0)

@Jonatas Walker:当我们搜索该位置并将添加Geocoder图层时?假设我们需要保存此坐标,如果我们需要通过添加Geocoder图层来显示此位置,那么我们应该采用什么方式?

基本上我们可以将保存位置设置如下

map.setView(new ol.View({
  projection: 'EPSG:3857',
  center:   ol.proj.transform([parseFloat(selectedInstallation.Longitude), parseFloat(selectedInstallation.Latitude)],
                                'EPSG:4326', map.getView().getProjection()),
  zoom: 10
}));