3

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 的形式获取标记位置。但是在被拖动后我无法获得标记的当前位置。

我想在拖动后在标记的当前位置更新我的位置文本框。

4

3 回答 3

6

我设法找到了更好的工作!

Nadeeshani 发布的您周围的工作不是很精确,它会将地图集中到最近的地址。

我设法通过使用谷歌地理编码来解决这个问题,测试以下代码。

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 示例

于 2014-05-08T08:54:53.000 回答
1

这可能不是一个 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 大小,因为自动完成在这里有点重新初始化。

希望这会有所帮助

于 2013-01-31T13:45:50.027 回答
0

我不确定这是否是同一个问题,但我的“查找”在执行多个“查找”时也返回了不正确的结果。似乎是因为在后续查找中设置了“界限”,并且返回了错误的结果。

作为一种解决方法,我通过添加以下行更改了“jquery.geocomplete.js”文件如下:

request.bounds = this.options.bounds;

就在这一行之前(352):

this.geocoder.geocode(request, $.proxy(this.handleGeocode, this));

那么 find 应该正常工作:

$("#geocomplete").geocomplete("find", latLng.toString());
于 2016-11-03T11:56:04.753 回答