从Google API placesSearch获取总标记计数

时间:2014-06-05 21:07:10

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

在示例小提琴中,如何获取地图上显示的标记总数?我正在将每个标记推送到这样的数组中:

markers.push(marker)

尝试获取这样的标记总数:

$('.marker-count span').html(markers.length);

不幸的是,“markers.length”在返回至少3时返回0。 我在这里有示例代码:http://jsfiddle.net/287C7/

如何显示标记总数?是不是可以将每个标记添加到我的数组中?

我需要知道所显示的标记数量,以便在没有标记时可以提醒用户。

谢谢,

如果您不想在jsfiddle.net上查看代码,请输入:

    var map, places, tmpLatLng, markers = [];

var pos = new google.maps.LatLng(51.5033630,-0.1276250);
  var mapOptions = {
    zoom: 8,
    center: new google.maps.LatLng(51.5033630,-0.1276250)
  };
  map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);
    // create the map and reference the div#map-canvas container
    var markerBounds = new google.maps.LatLngBounds();
    var service = new google.maps.places.PlacesService(map);


      // fetch the existing places (ajax) 
      // and put them on the map

        var request = {
          location: pos,
          radius: 48000,  // Max radius
          name: "mc donalds"
        };
        function callback(results, status) {
          if (status == google.maps.places.PlacesServiceStatus.OK) {
            for (var i = 0; i < results.length; i++) {
              createMarker(results[i]);
            }
            $('#map-canvas').attr("data-markers",results.length);
            $('.marker-count span').html(markers.length);                  
          } else {
            console.log("Places request failed: "+status);
          }
        } // end callback
        function createMarker(place) {
          var prequest = {
            reference: place.reference
          };
          var tmpLatLng = place.geometry.location;
          var marker = new google.maps.Marker({
            map: map,
            position: place.geometry.location
          });
          markers.push(marker);
          markerBounds.extend( tmpLatLng );
        } // end createMarker
        service.nearbySearch(request, callback);

1 个答案:

答案 0 :(得分:3)

当您运行代码时,placesSearch调用是异步的:

$('.marker-count span').html(markers.length);

结果还没有从服务器返回。更新标记数组后,您需要在回调中执行此操作。

        function callback(results, status) {
          if (status == google.maps.places.PlacesServiceStatus.OK) {
            for (var i = 0; i < results.length; i++) {
              createMarker(results[i]);
            }
            $('#map-canvas').attr("data-markers",results.length);
            $('.marker-count span').html(markers.length);                  
          } else {
            console.log("Places request failed: "+status);
          }
        } // end callback

working fiddle