以http://ubilabs.github.com/geocomplete/examples/draggable.html为例。
jQuery("#geocomplete").bind("geocode:dragged", function(event, latLng){
jQuery("input[name=lat]").val(latLng.lat());
jQuery("input[name=lng]").val(latLng.lng());
});在拖拽标记后,我可以获得lat lng形式的标记位置。但是在被拖拽后,我无法获取标记的当前位置。
我想在被拖动后更新标记当前位置上的位置文本框。
发布于 2014-05-08 16:54:53
我设法找到了一份更好的工作!
Nadeeshani发布的你周围的工作并不是非常精确,它会将地图集中到最近的地址。
我设法通过使用google地理编码来修复这个问题,测试以下代码。
var options = {
map: "#mapnew",
country: 'uk',
mapOptions: {
streetViewControl: false,
mapTypeId : google.maps.MapTypeId.HYBRID
},
markerOptions: {
draggable: true
}
};
$("#address").geocomplete(options).bind("geocode:result", function(event, result){
$('#logs').html(result.formatted_address);
var map = $("#address").geocomplete("map");
map.setZoom(18);
map.setCenter(result.geometry.location);
});
$("#address").bind("geocode:dragged", function(event, latLng){
console.log('Dragged Lat: '+latLng.lat());
console.log('Dragged Lng: '+latLng.lng());
var map = $("#address").geocomplete("map");
map.panTo(latLng);
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'latLng': latLng }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var road = results[0].address_components[1].long_name;
var town = results[0].address_components[2].long_name;
var county = results[0].address_components[3].long_name;
var country = results[0].address_components[4].long_name;
$('#logs').html(road+' '+town+' '+county+' '+country);
}
}
});
});查看我的JSFiddle Example
发布于 2013-01-31 21:45:50
这可能不是一个100%完美的解决方案,但我也有同样的问题,这就是我是如何度过难关的。这是一种变通方法。
$("#geocomplete").bind("geocode:dragged", function(event, latLng){
$("input[name=lat]").val(latLng.lat());
$("input[name=lng]").val(latLng.lng());
$("#geocomplete").geocomplete("find", latLng.toString());
});这里唯一的问题是地图被设置为默认的zomm大小,因为自动完成在这里被重新初始化了。
希望这能有所帮助
发布于 2016-11-03 19:56:05
我不确定这是否是相同的问题,但我的“find”在执行多个“find”操作时也返回了不正确的结果。这似乎是因为在后续的查找上设置了“界限”,并且返回了错误的结果。
作为一种解决方法,我通过添加以下行更改了"jquery.geocomplete.js“文件:
request.bounds = this.options.bounds;就在这一行(352)之前:
this.geocoder.geocode(request, $.proxy(this.handleGeocode, this));那么find应该按照正常的方式工作:
$("#geocomplete").geocomplete("find", latLng.toString());https://stackoverflow.com/questions/13835711
复制相似问题