Javascript 如何在Google maps v3 API上异步添加标记?
到目前为止,我一直在跟踪地图上的地图 然而,我一次最多只能看到一个标记。如果我尝试添加另一个标记,那么它就不起作用(我甚至看不到第一个标记)。 我的过程如下: 我初始化gmaps api:Javascript 如何在Google maps v3 API上异步添加标记?,javascript,ajax,google-maps,jquery,google-maps-api-3,Javascript,Ajax,Google Maps,Jquery,Google Maps Api 3,到目前为止,我一直在跟踪地图上的地图 然而,我一次最多只能看到一个标记。如果我尝试添加另一个标记,那么它就不起作用(我甚至看不到第一个标记)。 我的过程如下: 我初始化gmaps api: jQuery(window).ready(function(){ //If we click on Find me Lakes jQuery("#btnInit").click(initiate_geolocation); }); function
jQuery(window).ready(function(){
//If we click on Find me Lakes
jQuery("#btnInit").click(initiate_geolocation);
});
function initiate_geolocation() {
if (navigator.geolocation)
{
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyBbfJJVh0jL1X9b7XFDcPuV7nHD1HlfsKs&sensor=true&callback=initialize";
document.body.appendChild(script);
navigator.geolocation.getCurrentPosition(handle_geolocation_query, handle_errors);
}
else
{
yqlgeo.get('visitor', normalize_yql_response);
}
}
然后,我将它显示在适当的div上。但是,在进行AJAX调用时,为了获得我想要显示的不同标记的位置,它不能正常工作。下面是显示了一个简单地图的代码(因为这是到目前为止唯一对我有效的东西)
所以我想在AJAX调用之后添加标记。我已经设置了一个应该在when()中调用的函数
在foreach循环中显示标记,但不显示,无法使其工作。看起来是这样的:
CentralPark = new google.maps.LatLng(37.7699298, -122.4469157);
marker = new google.maps.Marker({
position: location,
map: map
});
任何帮助都会很好
感谢主要问题是
map
变量仅在slideToggle上的匿名回调范围内声明。首先,在顶级函数范围中声明
function handle_geolocation_query(position){
var map,
mapOptions = {
zoom: 14,
center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
mapTypeId: google.maps.MapTypeId.SATELLITE
}
...
然后更改slideToggle回调以初始化变量,而不是重新声明:
$('#map-canvas').slideToggle('slow', function(){
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
});
然后您应该将map
作为第二个参数传递给initializegoglemaps
函数,并使用initializegoglemaps(results,map)
调用它。看看这对你有什么影响,有什么问题就给我回电
function handle_geolocation_query(position){
var map,
mapOptions = {
zoom: 14,
center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
mapTypeId: google.maps.MapTypeId.SATELLITE
}
...
$('#map-canvas').slideToggle('slow', function(){
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
});