谷歌地图API没有显示引脚

时间:2017-06-15 16:27:30

标签: javascript ajax google-maps google-maps-api-3

TLDR:

问题是var marker = new google.maps.Marker()行。不知何故,这是执行,并且引脚不可见,不正确或不显示。

背景:

我有一些JS使用AJAX从我当前的位置拉出最近的25家企业。查询和ajax工作正常。地图正确居中,但没有出现任何针脚。

$ .each()循环运行,并具有正确的数据。 (console.log显示名称,lat和long就好了。)

我的直觉告诉我,我遗漏了一些简单的东西,但我找不到它。

这里有什么问题?

PS。这里的执行顺序是:

  1. getCurrentPosition向浏览器查询位置,并执行回调geo_success()

  2. geo_success()接收corrordinates,并实例化地图。

  3. 一旦我们有了一个地图对象,我们就会使用$ .ajax()服务器的/ locations / service来获取要展示的JSON数组。

  4. 我们遍历那些创建标记以添加到地图

  5. 我稍微怀疑我将地图回调initMap()留空了,但我在开发人员的参考资料中发现了这样做的示例代码。所以,应该没问题。

    以下是代码:

    // Footer JS
    
    var wpid = navigator.geolocation.getCurrentPosition(geo_success, geo_error, geo_options);
    
    var geo_options = {
        enableHighAccuracy: true, 
        maximumAge        : 30000, 
        timeout           : 27000
    };
    
    var latitude  = 0;
    var longitude = 0;
    
    function geo_success(position) {
        console.log(position.coords.latitude, position.coords.longitude);
        latitude = position.coords.latitude;
        longitude = position.coords.longitude;
        console.log("Init map @ " + latitude + ", " + longitude);
    
        var myCenter = {lat: latitude, lng: longitude};
    
        var mapOptions = {
          zoom: 12,
          center: myCenter,
          mapTypeId: 'roadmap'
        };
        var map = new google.maps.Map(document.getElementById('map'),
            mapOptions);
    
        counter = 0;
    
        $.ajax({
            url:'/locations/',
            data: {
                latitude : latitude,
                longitude : longitude
            },
            dataType: 'json'
            }).done(function(data){
                $.each(data,function(i,item){
                    console.log("Adding pin " + i + " for: " + item.label + " @ " + item.latitude + ", " + item.longitude);
                    pin = new google.maps.LatLng(parseInt(item.latitude),parseInt(item.longitude));
                    var marker = new google.maps.Marker({
                      position: pin,
                      map: map,
                      type:'info'
                    });
    
                })
            });
    }
    
    function geo_error() {
        alert("Sorry, no position available.");
    }
    
    function initMap() {
    }
    

1 个答案:

答案 0 :(得分:1)

我认为问题出在这一行,使用ParseFloat代替ParseInt!

替换此行

pin = new google.maps.LatLng(parseFloat(item.latitude),parseFloat(item.longitude));

使用此

{{1}}