我想知道是否可以使用googlemaps api同步地理解某些內容,而不是等待回調函數被調用,它將等待返回值。有沒有人找到一種方法來做這樣的事情。Google Maps API Geocode Synchronous
P.S:我使用的API
我想知道是否可以使用googlemaps api同步地理解某些內容,而不是等待回調函數被調用,它將等待返回值。有沒有人找到一種方法來做這樣的事情。Google Maps API Geocode Synchronous
P.S:我使用的API
地理編碼器調用與價值回調函數的版本3。這是做到這一點的唯一方法。如果它是同步的,那麼腳本會在等待Geocode處理時凍結。真的沒有理由這樣做。
你究竟想完成什麼?
是的,儘管不需要同步請求,但您試圖實現的是可能的。
看看這段代碼
function StoreGeo()
{
var address = $('input[name=zipcode]').val() + ', ' + $('input[name=city]').val();
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var ll = results[0].geometry.location.toString();
llarr = ll.replace(/[\(\) ]/g, '').split(',');
for(i = 0; i < llarr.length;i++)
{
$('#form').append($('<input type="hidden" name="'+(i == 0 ? 'lat' : 'long')+'">').val(llarr[i]));
}
$('#form').submit();
}
else
{
alert(status);
}
});
$('#form').unbind('submit');
return false;
}
$(document).ready(function() {
//init maps
geocoder = new google.maps.Geocoder();
$('#form').bind('submit',function() {
StoreGeo();
});
});
因此,附加提交處理的形式,當它處於做基於從表單中的地址信息的地理請求。但同時通過在處理程序中返回false來推遲提交。 響應處理程序將創建2個隱藏文本字段'lat'和'long'並存儲響應。最後表單由客戶端腳本提交,包括兩個新字段。在服務器端,您可以將它們存儲在數據庫中。
!!請注意,這是可能的,但可能違反谷歌條款,如上所述。
我簡單地在表單提交時使用一個標誌來知道提交何時應該通過或何時應該等待地理編碼。地理編碼完成後,它會再次重新提交表單。
var hasGeocoded = false;
searchFrom.on('submit', function(){
//If not geocoded yet
if (!hasGeocoded) {
var geocoder = new google.maps.Geocoder();
var location = locationEl.val();
geocoder.geocode({'address': location}, function (results, status) {
hasGeocoded = true;
if (status == google.maps.GeocoderStatus.OK) {
$('#coords').val(
results[0].geometry.location.lat() + ',' + results[0].geometry.location.lng()
);
}
searchFrom.submit();
});
return false; //wait for geocoder to finish and re-submit the form
}
return true;
});
我有一個包含地址的表單。作爲驗證表單數據的一部分,我正在考慮使用Google地理編碼器來檢查地址。我還需要將緯度,經度值輸入到我的數據庫中。我知道我可以使用回調函數來做到這一點,但是這看起來像是一種黑客,而且會更復雜。 – giroy 2009-08-21 14:24:24
Geocoder完全打算與回調函數一起使用。別擔心,這不是黑客行爲。 :)這真的是你唯一的選擇。但是請記住,如果您使用地理編碼器而不以某種方式在Google地圖上顯示結果,那麼您將違反Google地圖服務條款。 – 2009-08-21 14:53:58
據我所知,你不能在內部系統或選擇的受衆中使用google api。您使用地圖的頁面應該對整個互聯網開放 - 閱讀合同條款。好@B克里斯@克里斯B – 2010-06-28 15:13:07