Google Maps - Получение точек в массиве Php, до точек на карте - PullRequest
7 голосов
/ 06 июля 2011

Итак, у меня есть страница с именем region.php, которая в заголовке загружает JQuery, API карт Google и пользовательские функции Jquery, которые я использую для своего приложения, в файле functions.js.

В region.php я извлекаю несколько строк из БД MySQL и сохраняю их в массиве php, $ region.

В своем файле functions.js я пытаюсь json_encode массива $ регионов, ипередать его в мою функцию, чтобы воспроизвести все лат и долготы массива $ регионов на карте Google.Однако у IM возникли проблемы с получением массива Php в Javascript.

Я следил за этим, но, похоже, он не работает для меня: Перебор массива PHP в jQuery? .Не похоже, что javascript может работать с php в примере, который они дают

какие-либо идеи?(и я полагаю, что если я все делаю неправильно, каков наилучший способ получить массив php в javascript?

Region.php $ region = get_regions ();

foreach($regions as $region) : 

    print $region['name']; 

endforeach;


print "<div id='map_view_canvas' style=\"width:300px; height:300px; \"></div>";

functions.js

$(document).ready(function() { 

    initialize_view_map(); 
}

function initialize_view_map() 
{   
    var latlng = new google.maps.LatLng(9.3939, 20.57268);
    var myOptions = {
        zoom: 2,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_view_canvas"), myOptions);

    var mapPoints = <?php echo json_encode($regions) ?>;

    $.each(mapPoints, function (i, elem) {

        var newLatLng = new google.maps.LatLng(elem.latitude, elem.longitude);

        var marker = new google.maps.Marker({
            position: newLatLng, 
            map: map, 
            draggable:false,
            animation: google.maps.Animation.DROP
        });

    });
}

1 Ответ

5 голосов
/ 06 июля 2011

Из примера вы ссылаетесь на:

var arrayFromPHP = <?php echo json_encode($viewFields) ?>;

, который должен находиться в php-файле, а не в файле functions.js, как вы и делаете. Код между ними - php, поэтому его нужно запускать на стороне сервера, он не может работать на javascript (который на стороне клиента и поэтому ничего не знает о php или любом коде \ переменные \ etc на стороне сервера)

РЕДАКТИРОВАТЬ:

Теперь, когда вы добавили свой код, попробуйте что-то вроде следующего. Извините, я не слишком знаком с php, но, надеюсь, вы поняли:

Regions.php

$regions = get_regions();

foreach($regions as $region) : 

    print $region['name']; 

endforeach;

print "<script>";
print "var mapPoints = ";
echo json_encode($regions->toArray());
print "</script>";
print "<div id='map_view_canvas' style=\"width:300px; height:300px; \"></div>";

Тогда ваш Javascript становится (обратите внимание, что переменная mapsPoint уже была выведена регионами. Php, поэтому я удалил ее здесь)

$(document).ready(function() { 

    initialize_view_map(); 
}

function initialize_view_map() 
{   
    var latlng = new google.maps.LatLng(9.3939, 20.57268);
    var myOptions = {
        zoom: 2,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_view_canvas"), myOptions);

    $.each(mapPoints, function (i, elem) {

        var newLatLng = new google.maps.LatLng(elem.latitude, elem.longitude);

        var marker = new google.maps.Marker({
            position: newLatLng, 
            map: map, 
            draggable:false,
            animation: google.maps.Animation.DROP
        });

    });
}

EDIT2:

Еще одна попытка - переименовать ваши functions.js в function.js.php, обновить любые ссылки на него и затем попробовать - тогда, надеюсь, он будет работать через конвейер php и запускать код php в вашем js-файле.

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