Рендеринг нескольких маркеров API Карт Google V3 из JSON - PullRequest
4 голосов
/ 29 декабря 2011

Попытка построить несколько маркеров с помощью API Карт Google V3 из JSON, выводимого PHP из БД.

Карта инициализируется на странице, но не заполняется маркерами. Браузер предупреждает: «Ресурс интерпретируется как Другой, но передан с неопределенным типом MIME.»?

Предложения по дальнейшему устранению неисправностей / отладке, пожалуйста.

        <!--  load points from database into Locations JSON -->
    $(document).ready(function () {
        $.getJSON("map-service.php?action=listpoints", function(json) {

        if (json.Locations.length > 0) {
            for (i=0; i<json.Locations.length; i++) {
                var location = json.Locations[i];
                    addMarker(location); 
                    }
                }
            });

        function addMarker(location) {
            var point = new google.maps.LatLng(location.lat, location.lng); 
            var marker = new google.maps.Marker({
                position:point,
                map: map,
                title: location.name
                }); 
            };


    });

Проверенный пример вывода JSON из map-service.php? Action = listpoints

{"Locations":[{"name":"Abco Mountain","lat":"49.424999","lng":"-125.855003"},{"name":"Adder Peak","lat":"49.248333","lng":"-125.320000"},{"name":"Alexandra Peak","lat":"49.738110","lng":"-125.489998"},{"name":"Argus Mountain","lat":"49.538612","lng":"-125.389999"},{"name":"Big Baldy Mountain","lat":"49.759998","lng":"-126.129997"}]}

Ответы [ 2 ]

4 голосов
/ 31 декабря 2011

Моя проблема возникла из-за того, как я инициализировал исходный объект карты. Это не было видно в коде, которым я поделился ... извинения.

Я сделал это:

var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

и должен был сделать это:

this.map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

Я нашел решение в этом посте Добавление маркеров после создания карты Спасибо @yitwail!

0 голосов
/ 30 декабря 2011

Попробуйте использовать jquery $ .each для цикла.

if (json && json.Locations) {

$. Each (json.Locations, function () {addMarker (this);});

});

Кроме того, вы, вероятно, захотите вызвать parseFloat для lat и longiture внутри функции addMarker.

...