Создание списка маркеров Google Maps v3 из массива PHP - PullRequest
0 голосов
/ 01 мая 2011

У меня есть массив PHP в приведенной ниже форме, я пытаюсь нанести их на карту Google (v3) на своем веб-сайте, но подумал, как лучше всего создать код для маркеров.Ниже приведен пример некоторого рабочего кода, который я тестировал жестко.

Я мог бы создать цикл, который составлял список, однако мне пришлось бы проверить, чтобы удалить последнюю запятую, в противном случае Javascript был бы недействительным и чувствовал, что это довольно хакерский и, вероятно, не лучший способ сделать это,Я думал, что вместо этого будет что-то, что я пропускаю, что позволит мне передать массив и сказать ему, какие ключи использовать для создания Javascript, все правильно отформатированы?

Пример массива

Array ( 
[0] => Array ( 
[propertyId] => 1603 
[address1] => 1 Anystreet 
[address2] => 
[address3] => 
[town] => London: City 
[postcode] => AB1 3DE 
[sizeTotalSqM] => 906.18 
[sizeTotalSqF] => 9754.00 
[lat] => 51.5245029 
[lng] => -0.1120882 
[distance] => 0.00461191366463175 
[distanceMeters] => 0.512207377367013 
[description] => HTML description to go in here 
[imageUrl] => http://rackcdn.com/properties/o/1603-1.jpg 
[agentArray] => a:2:{i:0;a:6:{s:11:"agentUserId";s:2:"91";s:18:"agentUserFirstname";s:7:"Paul";s:16:"agentUserSurname";s:6:"Smith";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}i:1;a:6:{s:11:"agentUserId";s:3:"144";s:18:"agentUserFirstname";s:6:"Rupert";s:16:"agentUserSurname";s:7:"Perkins";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}} 
) 

[1] => Array ( 
[propertyId] => 505 
[address1] => 2 Anystreet 
[address2] => 
[address3] => 
[town] => London: City 
[postcode] => AB2 3CD 
[sizeTotalSqM] => 916.30 
[sizeTotalSqF] => 9863.00 
[lat] => 51.5189016 
[lng] => -0.1027654 
[distance] => 0.00908959843557461 
[distanceMeters] => 0.634894510451541 
[description] => Another description 
[imageUrl] => image-coming.png 
[agentArray] => a:3:{i:0;a:6:{s:11:"agentUserId";s:2:"91";s:18:"agentUserFirstname";s:7:"Paul";s:16:"agentUserSurname";s:6:"Smith";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}i:1;a:6:{s:11:"agentUserId";s:1:"5";s:18:"agentUserFirstname";s:5:"David";s:16:"agentUserSurname";s:7:"Beckham";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}i:2;a:6:{s:11:"agentUserId";s:2:"80";s:18:"agentUserFirstname";s:4:"Mark";s:16:"agentUserSurname";s:6:"Bourne";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}} 
) 

[2] => Array ( 
[propertyId] => 506 
[address1] => 45 Any Road
[address2] => Aldwych
[address3] => 
[town] => n/a 
[postcode] => AB3 2RF
[sizeTotalSqM] => 562.90 
[sizeTotalSqF] => 6059.00 
[lat] => 51.5189016 
[lng] => -0.1027654 
[distance] => 0.00908959843557461 
[distanceMeters] => 0.634894510451541 
[description] => Another description. 
[imageUrl] => http://rackcdn.com/properties/o/506-1.jpg 
[agentArray] => a:2:{i:0;a:6:{s:11:"agentUserId";s:1:"9";s:18:"agentUserFirstname";s:5:"Colin";s:16:"agentUserSurname";s:4:"Braddy";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}i:1;a:6:{s:11:"agentUserId";s:3:"107";s:18:"agentUserFirstname";s:7:"Richard";s:16:"agentUserSurname";s:6:"Head";s:18:"agentUserTelephone";s:20:"020 1 234 5678";s:9:"agentName";s:11:"The Agency";s:9:"agentLogo";s:15:"the-agency.png";}} 
) 
) 

Жестко закодированный код Javascript для Google Maps - использует address1, lat и lng из массива.В будущем, возможно, захотите добавить еще

var properties = [
        ['1 Anystreet', 51.5245029, -0.1120882],
        ['2 Anystreet', 51.5189016, -0.1027654],
        ['45 Any Road', 51.5189016, -0.1027654]
    ];

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Вы можете манипулировать своим массивом PHP, чтобы имитировать то, что требуется API Карт Google:

 Array ( 
     [0] => Array (
         [address1] => 1 Anystreet London
         [lat] => 51.5245029 
         [lng] => -0.1120882 
     )
     [1] => ...
 ) 

Чтобы сделать его читабельным для JavaScript, просто введите его в кодировке json:

<script type="text/javascript">
    var locations = <?php echo json_encode($locations_array); ?>;
</script>

Это исключает необходимость экранирования любого символа, удаления запятых, вставки квадратных скобок и т. Д.

Это дает дополнительное преимущество, поскольку ваши данные также хранятся в ключе, поэтому вы можете получить к ним доступ следующим образом с помощью JavaScript:

for(i in locations)
{
    var address1 = locations[i].address1;
    var lat = locations[i].lat;
    var lng = locations[i].lng;

    // use address1, lat, lng however you like
}
0 голосов
/ 01 мая 2011

Я всегда использую следующее решение, и оно всегда работало. ;)

В поле зрения:

<script type="text/javascript">

var properties = [
    <?php
    $count = count($data);
    for ( $i = 1; i <= count; ++$i ) {
        $lat = str_replace(',', '.', $data['lat']);
        $lng = str_replace(',', '.', $data['lng']);
        echo '["' . $data['address1'] . '", ' . $lat . ',' . $lng . ']';

        if ( $i < $count ) {
            echo ',';
        }
    }
    ?>
];

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