Google карты с несколькими маркерами из массива php - PullRequest
1 голос
/ 17 ноября 2011

Привет, у вас есть массив городов и вы хотите создать карту Google, используя javascript api v3.Когда страница загружается, карта продолжает переходить к каждому маркеру.Кроме того, карта становится очень маленькой, хотя я установил ей высоту и ширину. Вот мой код для генерации карты

<script>
var geocoder;
var map;
var timeout = 600;
var address_position = 0;
var address = [
     <?php
        foreach($cities_in_country as $item)
        {
            echo '"'.$item['name'].'",';
        }       
     ?>             
     ];

    function addMarker(position)
    {
        geocoder.geocode({'address': address[position]}, function(results, status)
        {
            address_position++;
            if (address_position < address.length)
            {
                setTimeout(function() { addMarker(address_position); }, (timeout));
            }
            if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
            {
                setTimeout(function() { addMarker(position); }, (timeout * 3));
            }
            else if (status == google.maps.GeocoderStatus.OK) 
            {   map.setCenter(results[0].geometry.location);                
                var marker = new google.maps.Marker({
                    position: results[0].geometry.location,
                    map: map,                   
                    icon:"<?=base_url()?>assets/goo/images/icons/marker.png",                            
                });           
            } 
        });
    }


function codeaddress() {

    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 6,
      center: latlng,      
     navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
     mapTypeId: google.maps.MapTypeId.ROADMAP,      
    }   
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

     addMarker(address_position);


}

$(document).ready(function() {      
    codeaddress();

}); 
</script>

и

<div id="map_canvas" style="width: 640px; height: 420px;"></div>

1 Ответ

3 голосов
/ 17 ноября 2011

"карта продолжает прыгать к каждому маркеру."- это потому, что вы вызываете map.setCenter(results[0].geometry.location); внутри функции addMarker, над которой вы зацикливаетесь.Удалите эту строку, и она перестанет пересекать карту.

Кроме того, вы должны изменить это;есть опасность, что если вы превысите лимит запросов, вы продолжите вызывать addMarker только с более длительным тайм-аутом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...