【问题标题】:Google Maps AP v3 I - trying to add markers dynamically with jQuery $.ajaxGoogle Maps AP v3 I - 尝试使用 jQuery $.ajax 动态添加标记
【发布时间】:2013-08-13 21:55:56
【问题描述】:

我正在使用 Google Maps API v3 为我的应用程序创建一个地图,以便在我们的网络广播中向观众展示。这个想法是当一个新的观众跳到流上时在地图上添加一个新的标记。那就是地图没有重新加载,只是添加了一个新的标记。

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

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

带有 php foreach() 的 js(有效)

注意:我是这样测试的,在$.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 与 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);
    }


  });
}

【问题讨论】:

  • 您在控制台上看到任何错误吗? console.log(result) 的输出是什么?
  • @koala_dev 没有错误。控制台的输出是result 0: 26.122299194336, 26.122299194336

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


【解决方案1】:

试试这个

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

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

【讨论】:

  • 这是有道理的,当我尝试它时,我得到了不同的结果。一半好一半坏。标记现在显示在地图上,但应该是英尺的标记。佛罗里达州劳德代尔(美国)是埃及的标志。这样可以将标记放在地图上,但它必须接收不同的纬度和经度?
  • 你的控制台中有值,用这些值进行测试并确定 ajax 结果是否给出了正确的坐标
  • 经度不正确。 EgyptFt. Lauderdale FL,也许你用的经纬度数字是一样的?
  • @geocodezip 似乎是这样,从问题中的评论来看,两个值都是相同的
  • 是的。我查了坐标,它们确实指向埃及。我的 PHP 示例给出了正确的坐标,但我的 ajax 示例没有。我将不得不对此进行调查以了解原因。
猜你喜欢
  • 2011-07-14
  • 2011-12-12
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 2015-07-16
  • 2011-03-09
相关资源
最近更新 更多