我希望在此演示中进行类似的搜索.这是我正在寻找的
我能够使用传单搜索设置搜索,但搜索功能不强,与谷歌提供的地方搜索框相比较慢.
我在我的应用程序中使用传单AngularJS插件.请帮忙.
谢谢
两种行为之间的差异很可能不是由于Leaflet-search插件本身,而是来自该插件使用的Google Geocoding服务(在Google中实现),以及内部使用的那种您在开头提到的Google地方信息搜索框.
也就是说,无论您使用的是低级地理编码服务,还是使用自己的Places API,Google都可能会提供不同的结果.
如果您不愿意使用更集成的Google服务,则可以在Leaflet地图(而不是Leaflet搜索插件)中实施Google地方信息搜索框.
var GooglePlacesSearchBox = L.Control.extend({
onAdd: function() {
var element = document.createElement("input");
element.id = "searchBox";
return element;
}
});
(new GooglePlacesSearchBox).addTo(map);
var input = document.getElementById("searchBox");
var searchBox = new google.maps.places.SearchBox(input);
searchBox.addListener('places_changed', function() {
var places = searchBox.getPlaces();
if (places.length == 0) {
return;
}
var group = L.featureGroup();
places.forEach(function(place) {
// Create a marker for each place.
var marker = L.marker([
place.geometry.location.lat(),
place.geometry.location.lng()
]);
group.addLayer(marker);
});
group.addTo(map);
map.fitBounds(group.getBounds());
});
(注意:将searchBox
代码推入内部可能会更清晰onAdd
,现在没有时间进行测试).
演示:http://plnkr.co/edit/YjcPKL7kB1bIByu7QJ2u?p =preview
注意:还有许多其他用于地理编码的Leaflet插件.那些通过Google服务提供搜索的服务都使用与传单搜索示例中使用的服务相同的服务.