2012-12-12 58 views
3

http://ubilabs.github.com/geocomplete/examples/draggable.html爲例。jQuery GeoComplete - 拖動標記時獲取位置

jQuery("#geocomplete").bind("geocode:dragged", function(event, latLng){ 
     jQuery("input[name=lat]").val(latLng.lat()); 
     jQuery("input[name=lng]").val(latLng.lng());    
    }); 

我可以在拖動標記之後以lat lng形式獲得標記位置。但是我拖動後無法獲取標記的當前位置。

我想在拖動標記後在當前位置上更新我的位置文本框。

回答

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大小,因爲自動完成在這裏重新初始化。

希望這會有所幫助

5

我設法找到更好的解決方法!

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 Example

0

我不知道這是否是同樣的問題,但我的「發現」做更多的那麼一個當「發現」也返回不正確的結果。看起來這是因爲在後面的查找中設置了「邊界」,並且返回了錯誤的結果。

作爲一種變通方法,我改變了 「jquery.geocomplete.js」 文件如下,通過加入這一行:

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

然後:

request.bounds = this.options.bounds; 

這條線(352)之前發現應該按照正常工作:

$("#geocomplete").geocomplete("find", latLng.toString());