Инициализация карты Google с несколькими маркерами - PullRequest
0 голосов
/ 29 сентября 2010

Я пытаюсь разработать приложение, в котором адреса извлекаются из базы данных, чтобы показывать их с помощью маркера на карте Google на моем веб-сайте.

У меня есть следующий код javascript + jquery, карты Googleи все другие необходимые файлы javascript:

$(document).ready(function(){

    // initialise map
    var myLatlng = new google.maps.LatLng(50.52,4.22);
    // specify options
    var myOptions = {
        zoom: 5,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    // attach map to html and set reference
    var map = new google.maps.Map(document.getElementById("googlemap"), myOptions);

    // markers array
    var markers = Array();

    // infowindows array
    var infos = Array();

    var lat = 50;
    for(var j = 0; j < 5; j++){

        var contentString = '<div id="content">test</div>';

        var infowindow = new google.maps.InfoWindow({
            content: contentString
        });

        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(lat,4.22),
            map: map,
            title: 'Europe'
        });

        // push vars to arrays markers and infos
        markers.push(marker);
        infos.push(infowindow);

        lat = lat + 1;

    }

    for(var i = 0; i < markers.length; i++) {
        google.maps.event.addListener(markers[i], 'click', clickHandler(i));
    }

    function clickHandler(i) {
        infowindow.open(map,infos[i]);
    }

});

для проверки / эмуляции цикла for, который я буду использовать для извлечения данных из базы данных с помощью PHP. Я вставил немного для оператора for для заполнения массива маркеров и информации..

Все работает (отображаются маркеры), за исключением того, что при щелчке маркеров не отображаются информационные блоки.

Onload Я также получаю эту ошибку в firebug: Ожидается аргументtype function line 23 - http://maps.gstatic.com/intl/nl_ALL/mapfiles/api-3/2/7/main.js

Может кто-нибудь помочь, пожалуйста?

Еще 1 побочный вопрос: как я могу преобразовать строковые адреса, такие как номер улицы, почтовый индекс, город в широту и долготу?

Спасибо!

1 Ответ

2 голосов
/ 29 сентября 2010

Проблема с отображением маркеров заключается в том, что вы звоните:

infowindow.open(map,infos[i]);

Второй параметр должен быть маркером, а не информацией.

infowindow.open(map,marker);

JavaScriptиз-за этого возникает ошибка:

google.maps.event.addListener(markers[i], 'click', clickHandler(i));

Вместо привязки clickHandler в качестве функции события этот код на самом деле вызывает clickHandler и пытается передать возвращаемое значение (нет) в качестве параметра слушателю,Исправление, указывающее на функцию, все равно не даст того, что вы хотите, и это обсуждается в http://code.google.com/apis/maps/documentation/javascript/events.html#EventClosures

Так что вы должны сделать:

addEventListener(markers[i]);

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

Для преобразования координат улиц и т. Д.,взгляните на Google Geocoding API: http://code.google.com/apis/maps/documentation/geocoding/index.html

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