无法通过Ajax将标记添加到Google地图

时间:2017-02-23 23:24:04

标签: ajax google-maps google-maps-markers

我想要实现的目标:

  1. 生成地图
  2. 获取地图
  3. 的界限信息
  4. 使Ajax调用传递Bounds信息,返回的数据是Marker info
  5. 使用标记填充地图
  6. 我被卡住了,因为我无法触发Ajax调用。

    代码似乎在警报(“ajax ready”)之后停止运行。我的控制器动作有一个断点,永远不会被击中。

    我得到的唯一错误是“nE未定义”,但是如果我在设置值后输入一个警告线,则显示该值,因此我甚至不确定是否相关。 / p>

    我已成功使用早期版本的Google地图,V3似乎有点不同。在将它们放入事件监听器之前,我无法获取代码行来设置运行边界。我在Ajax调用中尝试了同样的方法,但没有什么区别。

    我知道我没有在ajax调用中将标记添加到地图中,我还没有达到那个部分。

    使用Javascript:

    .name

1 个答案:

答案 0 :(得分:0)

" bounds_changed"当地图边界发生变化时,侦听器将异步触发。你需要把你的AJAX调用调用它的回调函数(当新的边界可用时):

google.maps.event.addListener(map, 'bounds_changed', function () {
   bounds = map.getBounds();
   nE = bounds.getNorthEast();
   sW = bounds.getSouthWest();

  alert("ajax ready");
  $.ajax({
    type: "POST",
    url: '/Home/GetMapMarkers',
    data: { neLatitude: nE.lat(), neLongitude: ne.lng(), swLatitude: sW.lat(), swLongitude: sW.lng() }
    }).done(function (data) {
      for (i = 0; i < data.length; i++)
      {
        var marker = new google.maps.Marker({
          position: new google.maps.LatLng(data[i].Latitude, data[i].Longitude),
          map: map,
          title: data[i].RestaurantName
        });
        markers.push(marker);
      }
    });
});