地理编码中的Javascript变量范围问题

时间:2013-12-20 23:01:04

标签: javascript variables geocoding

当我在代码上使用地理编码API时,我将 var latitude 指定为全局(第20行),而在函数地址解析器中,变量可以正常工作。但在第35行,它会抛出错误 0 。即使它适用于功能范围。

14 <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
15 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
16 <script type="text/javascript">
17 
18 var geocoder = new google.maps.Geocoder();
19 var longitude = 0.0;
20 var latitude = 0.0;
21 
22 if (geocoder) {
23     geocoder.geocode({ 'address': 'Louvre Museum' }, function (results, status) {
24             if (status == google.maps.GeocoderStatus.OK) {
25             longitude = results[0].geometry.location.nb;
26             latitude = results[0].geometry.location.ob;
27             console.log(results[0].geometry.location);
28             } 
29             else {
30             console.log('No results found: ' + status);
31             }
32             });
33 }
34 
35 console.log(latitude);

1 个答案:

答案 0 :(得分:1)

Geocoder异步工作,因此当您调用console.log(纬度)时,Geocoder尚未完成,因此未为纬度分配不同的值。

https://developers.google.com/maps/documentation/geocoding/

要显示您的坐标,您可以执行以下操作:

    geocoder.geocode({
    'address': 'Louvre Museum'
}, function (results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        longitude = results[0].geometry.location.nb;
        latitude = results[0].geometry.location.ob;
        console.log(results[0].geometry.location);
        document.getElementById('the_id_of_your_element').innerHTML = longitude + ',' + latitude;
    } else {
        console.log('No results found: ' + status);
    }
});