2011-12-21 3 views
1

Я новичок в написании кода карт Google и ограниченное знание Javascript и PHP. Тем не менее, мне удается написать PHP-файл, который подключается к моей SQL-базе данных и выводит XML-файл. Хотя, я не могу понять, как создать несколько маркеров, которые относятся к XML-файлу, который имеет ранее геокодированные координаты lat/lng.Графические маркеры в API Карт Google V3

Я знаю, что функция создания рынка (?) Используется для создания рынка на карте, но я не знаю, как сообщить функции итерации через созданный файл XML, а затем отобразить маркер. Я думаю, что я хотел бы ограничить показ маркеров на основе плитки, потому что все объекты, которые я хочу отобразить, находятся в радиусе 20 миль.

Укажите меня в правильном направлении, пожалуйста. Я не понимаю логику кода, хотя бы часть его. Направьте меня на правильные статьи и как скомпрометировать весь код вместе. Например, создание маркера, фильтрация по сетке и т. Д. Я знаю, что это можно сделать!

спасибо.

+1

В документации приведены примеры. http://code.google.com/apis/maps/documentation/javascript/overlays.html#Markers Как далеко у вас это получилось? Вы хотя бы пробовали пример? – Eduardo

+0

Прямо сейчас у меня есть карта, сосредоточенная на lat/lng, которую я хочу. и уровень масштабирования, который я хочу. У меня есть файл php, помещающий действительный xml со всеми моими столбцами, такими как SIC, Zip, lat, lng, адрес, имя и т. Д. Но я не понимаю Javascript достаточно хорошо, чтобы писать код для итерации через XML-файл для захвата информацию lat/lng, чтобы отобразить ее на карте. Я думаю, я понимаю, как это будет работать, а не как его реализовать. – user1001259

ответ

0

Существует множество способов создания маркеров с данными XML.

  1. Написать функцию PHP, которая будет вызываться при загрузке страницы и выводит LAT/LNG и другие данные, необходимые для построения маркеров и создавать всплывающие подсказки и т.д. Вы можете отправить данные в любом формате, например, XML, JSON для fe. На данный момент Javascript не может читать файлы с интерфейсного модуля (у Chrome есть API, но я бы не стал рекомендовать, что он безопасен на стороне сервера.)

  2. Чтобы просто увеличить область, в которой есть все маркеры и не видеть весь WORLD_VIEW из gmaps, также есть много способов. Один из них, о котором я знаю, создает объект LatLngBounds, который в основном похож на прямоугольник и просто включает все ваши маркеры. Затем в API GoogleMaps вы найдете метод с именем fitBounds, который является методом класса Map, который будет соответствовать этому объекту, который создает границу вокруг всех ваших маркеров на карте div.

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

1

Сначала вам нужно научиться разбирать XML-данные, чтобы вы могли использовать его с API Карт. Для этого я рекомендую использовать для этого jQuery. Вот основная статья, которая поможет вам начать чтение XML с помощью jQuery: http://think2loud.com/224-reading-xml-with-jquery/

После этого выполните Google Maps documentation, есть отличные примеры по обработке маркеров.

Я думаю, что я хотел бы ограничить показ маркеров, основанных на плитке, как хорошо, потому что все объекты, которые я хочу, чтобы отобразить находятся в пределах 20 миль радиуса.

Я не знаю точно, что вы просите здесь. Вы не можете, насколько я знаю, фильтр, основанный на карте. Вы можете отображать маркеры, находящиеся в пределах X миль определенной точки. Голый кости простой способ сделать это просто найти координаты, которые имеют конкретный ограничивающий прямоугольник с широтой и долготами в пределах Х количество градусов от конкретной точки. Если бы вы сделали это, я бы рекомендовал сделать это на стороне сервера.Вот SQL-запрос, который фильтрует расположение в пределах примерно 15 миль (article context here):

SELECT Address, SQRT(POWER(Latitude - @Latitude, 2) + POWER(Longitude - @Longitude, 2)) * 62.1371192 AS DistanceFromAddress 
FROM Stores 
WHERE ABS(Latitude - @Latitude) < 0.25 AND ABS(Longitude - @Longitude) < 0.25 
ORDER BY DistanceFromAddress 

лучший способ сделать это состоит в использовании Haversine formula, чтобы определить, если точка находится в пределах диапазона. Вы можете сделать это самостоятельно: example или использовать Google's Geometry library (который использует формулу haversine) для этого.

0

Я также использую API Карт Google для отображения маркеров - однако с JSON. Я нашел following относительно использования XML с маркерами:

// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo 'type="' . $row['type'] . '" '; 
    echo '/>'; 
} 

Также хороший discussion об использовании XML против других транспортов с этим API.