$(function() {
var lat = 41.9100711;
var lng = 12.535`enter code here`9979;
var geocoder = new google.maps.Geocoder();
var address = "<?php echo $citta ?>";
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK)
{
// do something with the geocoded result
//
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
}
});
alert("latitudine"+lat);
我需要lat和lng这个插件,我需要在这里声明lat和lng,因为这就是为什么我要求使用globa变量来使用....以防任何其他想法从地址中找到lat和lng以用于此插件?
$(&#39;#地图容器&#39)。storeLocator({&#39; deafultlat&#39; =纬度,&#39; defaultlng&#39; = LNG});
答案 0 :(得分:1)
变量已更改,但您的警报代码不在jQuery函数中:
$(function(){ /* your code */ })
alert(lat + "/" + lng);
由于您在函数中使用 var ,因此它们不再是全局变量。你想要做的是,删除$()函数中的var语句,然后像这样写:
var lat, lng;
$(function(){
// your current code.
})
// no alert here since lat/lng are empty when alert is called.
请注意JavaScript并发性,您的警报代码很可能在$()方法之前执行。这是因为$()是$(&#34; document&#34;)。ready()的简写,它将延迟调用,直到文档准备就绪。
尝试将警报放入地理编码器的回调中以解决此问题。
正下方设置lat / lng:
$(function() {
var lat = 41.9100711;
var lng = 12.5359979;
var geocoder = new google.maps.Geocoder();
var address = "";
geocoder.geocode({
'address': address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// do something with the geocoded result //
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
alert("latitudine"+lat); // works!
}
});
});
要制作lat / lng真正的全局变量,你可以这样写:
window.lat = 0.0;
window.lng = 0.0;
// Now whenever you change window.lat, it's applied to all functions since window is already a global.
或者只在任何函数之外使用var
来制作全局变量。
使用全局变量是不好的做法,只要你需要这些lat / lng就应该使用回调。