我试图在通过 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 );
// }
// }
// });
}