1

Используя решение Кейси P Томаса к обработке нескольких маркеров в одном месте:Google Maps Маркер кластеризатор Plus Без геокодирования

Пример: http://maps.caseypthomas.org/ex/MarkerClustererPlus/exCoincidentMarkers_SharedInfowindow_wGeocoding.html

Он отлично работает, и сочетает в себе содержание в единое информационное окно, однако по-видимому, существует предел геокодирования на api, который разбивает карту. Мне даже не нужно геокодировать адреса, так как у меня есть список кодов, которыми я прохожу.

Так что мой вопрос: как я могу обойти функцию геокодирования от JS и построить карту таким образом?

Благодаря

код я использую:

 var map; 

    //marker clusterer 
    var mc; 
    var mcOptions = {gridSize: 20, maxZoom: 17}; 

    //global infowindow 
    var infowindow = new google.maps.InfoWindow(); 

    //geocoder 
    var geocoder = new google.maps.Geocoder(); 

    //Content and Geos 
    var address = new Array(<?php echo $tweetgeos;?>); 
    var content = new Array(<?php echo $tweets;?>); 


    function createMarker(latlng,text) { 
     var marker = new google.maps.Marker({ 
      position: latlng 
     }); 

     ///get array of markers currently in cluster 
     var allMarkers = mc.getMarkers(); 


     //check to see if any of the existing markers match the latlng of the new marker 
     if (allMarkers.length != 0) { 
      for (i=0; i < allMarkers.length; i++) { 
       var existingMarker = allMarkers[i]; 
       var pos = existingMarker.getPosition(); 

       if (latlng.equals(pos)) { 
        text = text + " & " + content[i]; 
       } 
      } 
     } 

     google.maps.event.addListener(marker, 'click', function() { 
      infowindow.close(); 
      infowindow.setContent(text); 
      infowindow.open(map,marker); 
     }); 

     return marker; 
    } 


    function geocodeAddress(address,i) { 
     geocoder.geocode({'address': address}, function(results, status) { 

      if (status == google.maps.GeocoderStatus.OK) { 

       var marker = createMarker(results[0].geometry.location,content[i]); 
       mc.addMarker(marker); 

      } else { 
       alert("Geocode was not successful for the following reason: " + status); 
     } 

     }); 
    } 

    function initialize(){ 
     var options = { 
      zoom: 5, 
      center: new google.maps.LatLng(51.50733,-0.12768), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     map = new google.maps.Map(document.getElementById('map'), options); 


     //marker cluster 
     mc = new MarkerClusterer(map, [], mcOptions); 
     for (i=0; i<address.length; i++) { 
      geocodeAddress(address[i],i); 
     } 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 

ответ

0

Вы можете инициализировать маркеры непосредственно с вашими координатами и без вызова API геокодирования.

// Change address Array to an Array of JS Objects 
var address = [ 
    { 
     latitude: lat1, 
     longitude: lng1, 
    }, 
    { 
     latitude: lat2, 
     longitude: lng2, 
    }, 
    ... 
]; 

// In function:createMarker() 
var myLatLng = new google.maps.LatLng(latlng.latitude, latlng.longitude); 
var marker = new google.maps.Marker({ 
    position: myLatLng, 
}); 

// In function:initialize() 
for (i=0; i<address.length; i++) { 
    createMarker(address[i], content[i]); 
} 
+0

Отлично работает! Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^