我正在使用leaflet.js和这个插件:https://github.com/stefanocudini/leaflet-search并且需要一种从地址搜索中获取lat和long坐标并将它们放入输入字段,或者只是能够使用它们的方法。 。
答案可能在下面的代码中,只是无法弄清楚如何做到这一点......
var geocoder = new google.maps.Geocoder();
function googleGeocoding(text, callResponse)
{
geocoder.geocode({address: text}, callResponse);
}
function filterJSONCall(rawjson)
{
var json = {},
key, loc, disp = [];
for(var i in rawjson)
{
key = rawjson[i].formatted_address;
loc = L.latLng( rawjson[i].geometry.location.lat(), rawjson[i].geometry.location.lng() );
json[ key ]= loc; //key,value format
}
return json;
}
map.addControl( new L.Control.Search({
callData: googleGeocoding,
filterJSON: filterJSONCall,
wrapper: 'findbox',
markerLocation: true,
autoType: false,
autoCollapse: true,
minLength: 5,
zoom: 10,
initial: true,
collapsed: false,
tipAutoSubmit: false,
autoResize: false,
text: 'Enter an Address'
}) );
答案 0 :(得分:0)
在leaflet-search.js文件中,你有一个名为
的函数_getLocation(this._input.value)
此函数返回您需要的信息。您可以在_handleSubmit函数中看到它,如下所示:
var loc = this._getLocation(this._input.value);
如果你这样做:
console.log("Latitude: " + loc.lat);
console.log("Longitude: " + loc.lng);
在leaflet-search.js中显示此调用,您将在控制台中获得所需的信息。
我向您提供了所需的信息,现在您可以按照自己喜欢的方式使用它。创建一个公共函数,然后在代码中或任何你想要的内容中访问它。
答案 1 :(得分:-1)
var searchbox = new L.Control.Search({
callData: googleGeocoding,
filterJSON: filterJSONCall,
wrapper: 'findbox',
markerLocation: true,
autoType: false,
autoCollapse: true,
minLength: 5,
zoom: 10,
initial: true,
collapsed: false,
tipAutoSubmit: false,
autoResize: false,
text: 'Enter an Address'
});
searchbox.on('search_locationfound', function(e) {
var locLat = e.latlng.lat;
var locLng = e.latlng.lng;
console.log(locLat+', '+locLng);
});
这对我很好。我希望我可以帮助其他人。 :)