Google Maps AP v3 I - 尝试使用jQuery $ .ajax动态添加标记

时间:2013-08-13 21:55:56

标签: php javascript google-maps jquery google-maps-api-3

我正在使用Google Maps API v3为我的应用创建地图,以便在我们的网络直播中显示观看者。我们的想法是在新的查看器跳转到流上时在地图上添加新标记。也就是说,地图未重新加载,只添加了新标记。

我试图通过对获取当前查看者的脚本的ajax调用来实现此目的。我有一个输出到控制台显示结果,纬度和经度坐标是正确的,所以我不知道为什么它没有把标记放在地图上。

我在页面中引用与地图相同的类,因为我使用ajax脚本调用,所以我可以在页面上的javascript中间执行PHP foreach循环,并将标记放到地图上!但是,当然,我需要使用ajax来获取新的服务器端信息(新观众)。

js with php foreach()(作品)

注意:这是我测试它的方式,它是在$ .ajax成功函数中,但与ajax脚本无关

//add markers
function addMarker(stream_id) {
  $.ajax({
    dataType: 'json',
    url: '../../stream/' + stream_id + '/mapmarkers',
    success: function(result) {
      <?php foreach($stream_viewer_info as $viewer) : ?>

        markers.push(new google.maps.Marker({
          position: new google.maps.LatLng(<?= $viewer['location_info']['latitude'] . ', ' . $viewer['location_info']['longitude']; ?>),
          map: map
        }));

      <?php endforeach; ?>

    },
    complete: function() {
      setTimeout(function(){addMarker(<?=$stream_id; ?>)}, 1000);
    }


  });
}

js with js for()(不起作用)

//add markers
function addMarker(stream_id) {
  $.ajax({
    dataType: 'json',
    url: '../../stream/' + stream_id + '/mapmarkers',
    success: function(result) {
      for(var i = 0; i < result.length; i++) {
          console.log('result ' + i + ': ' + result[i]['latitude'] + ', ' + result[i]['longitude']);

        markers.push(new google.maps.Marker({
          position: new google.maps.LatLng(result[i]['latitude'] + ', ' + result[i]['longitude']),
          map: map
        }));

      }

    },
    complete: function() {
      setTimeout(function(){addMarker(<?=$stream_id; ?>)}, 1000);
    }


  });
}

1 个答案:

答案 0 :(得分:2)

试试这个

markers.push(new google.maps.Marker({
    position: new google.maps.LatLng(result[i]['latitude'], result[i]['longitude']),
    map: map
}));

您需要使用实际逗号分隔参数,而不是字符串