0

我试图在通过 AJAX 调用获取位置后向地图添加多个标记,但标记根本不会显示。我检查了纬度和经度,它们被正确检索。我尝试了两种添加它们的方法(传统的地图方式和通过我使用的名为 gmaps.js 的库),但它们都不起作用。

我需要一个闭包来简单地添加标记吗?我不需要添加事件和东西(还)。

我一直在寻找解决方案,但我发现的似乎都不起作用。请帮忙。

这是代码(内部注释):

function mapInit( vID )
{ 
    // INIT MAP
    var map = new GMaps({
        div: '#map',
        lat: 0,
        lng: 0,
        zoom: 14,
        zoomControl: false,
        panControl: false,
        mapTypeControl: false,
        scaleControl: false
    }); 

    var vData = ''; 
    var club_centered = false;

    // get villa info via AJAX
    // single villa if vID = 0; else get all villas
    $.ajax({
        url: ajax_vars.ajax_url,
        type: 'POST',
        beforeSend: function( x ) 
        {
            if( x && x.overrideMimeType ) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        data: 'action=get_villa_data&id='+vID,
        success: function( response ) 
        { 
            vData = response;
        },
        complete: function()
        {
            for ( var i = 0; i < vData.length; i++ )
            {   
                if ( vData[i].lat )
                { 
                    console.log( vData[i].lat );
                    console.log( vData[i].lon );
                    // using gmaps.js
                    // map.addMarker({
                        // title: vData[i].title,
                        // lat: parseFloat( vData[i].lat ),
                        // lng: parseFloat( vData[i].lng )
                    // });
                    // traditional maps way
                    // I get an error if I uncomment the 'map:map' line
                    marker = new google.maps.Marker({
                        position: new google.maps.LatLng( parseFloat(vData[i].lat), parseFloat(vData[i].lon) ),
                        // map: map
                    });
    }
            }
        }
    });

    // add CLUB marker
    // this works perfectly
    var clubLat = 37.809750047720904;
    var clubLon = 20.875182151794434;
    // GMaps.geocode({
      // address: clubAddress,
      // callback: function(results, status){
        // if(status=='OK'){
          // var latlng = results[0].geometry.location;
          map.addMarker({
            title: 'The Club',
            lat: clubLat,
            lng: clubLon
          });
          // if ( club_centered )
            map.setCenter( clubLat, clubLon );          
        // }
      // }
    // });
}
4

1 回答 1

0

我认为您的问题出在创建地图时,因为您在 map:map 上遇到错误,因此可能未正确创建地图。

尝试改用这个:

var mapOptions = {
              center = new google.maps.LatLng(0,0),
                  zoom: 14,
                  zoomControl: false,
                  panControl: false,
                  mapTypeControl: false,
                  scaleControl: false
            }
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
于 2012-12-12T10:39:22.307 回答