не удалось вызвать функцию "new google.maps.Circle" из инициализации - PullRequest
1 голос
/ 06 января 2012

Может ли кто-нибудь описать меня, где проблема и как можно исправить код?

Это не работает:

function initialize() {
    var b = new google.maps.LatLng(49.190033, 16.6150523); var Copt = {center:b, map: map, radius: 1000};
    var mapOptions = { zoom: 13, center: b, mapTypeId: google.maps.MapTypeId.ROADMAP }              
    var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
    cir();
    //var C = new google.maps.Circle(Copt);C.setMap(map);
} 

function cir(){    
    var C = new google.maps.Circle(Copt); C.setMap(map);
}

Но когда я помещаю содержимое функции cir () внутрь initialize, она работает: здесь

function initialize() {
    var b = new google.maps.LatLng(49.190033, 16.6150523); 
    var Copt = {center:b, map: map, radius: 1000};
    var mapOptions = { zoom: 13, center: b, mapTypeId: google.maps.MapTypeId.ROADMAP }              
    var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
    //cir();
    var C = new google.maps.Circle(Copt);C.setMap(map);
} 

Я думаю, это как-то связано с частью <body onload="initialize()"> <div id="map_canvas" style="width:100%; height:100%"></div>, но на самом деле не понимаю, что делать, как поместить функцию вне инициализации и как это работает.

Не могли бы вы создать краткий пример функции для создания круга и вызвать его из initialize?

Ответы [ 2 ]

1 голос
/ 25 августа 2012

Я обычно заявляю var map; во всем мире.это предотвращает необходимость проходить мимо ссылки на карту.

1 голос
/ 06 января 2012

Думаю, проблема в том, что ваша функция C не имеет переменной map в области видимости.Попробуйте сделать следующее:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body onload="initMap();">
    <div id="map_canvas"></div>
    <script>
        function initMap() {
            var options = {
                // your options here
            };
            var map = new google.maps.Map(document.getElementById('map_canvas'), options);
            drawCircle(map);
        };

        function drawCircle(map) {
            // draw circle logic in here; use map as you would normally
        };
    </script>
  </body>
</html>

Передача параметра map в функцию drawCircle() означает, что он может использовать его.Я не знаком с объектом Circle, но вы сможете реализовать свой код здесь.

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