Intereting Posts
Как создать ответ электронной почты / метод, чтобы закодировать ответ? Как загрузить представление из альтернативного каталога в Laravel 4 Форматировать ошибку PHP на рабочем сервере PHP Неустранимая ошибка: не очистить PDOException: не удалось найти драйвер Фильтрация сообщений по тегу на странице Tumblr? Программно отключить определенные функции PHP для тестирования Коллекция Laravel преобразует массив в объект Поиск и замена нескольких значений несколькими / разными значениями в PHP5? mail () не работает на новом сервере Как воспроизводить все видеофайлы в браузере с помощью php? Как кодировать URL-адрес с помощью php-подобных браузеров Как написать запрос на обновление с помощью некоторой {$ variable} с примером Функции против статических методов Как я могу понять, почему cURL висит и не отвечает? Использование таймера обратного отсчета jquery с mysql datetime?

API Карт Google v3 – PHP – MYSQL

GOOGLE MAPS API V3 – это то, что я пытаюсь использовать.

У меня есть все координаты в mysql. Я просто, например, должен взять 5 списков и поместить их на карту, но я бы хотел, чтобы можно было найти центр, основанный на нескольких координатах, которые я хотел бы отображать, и уровне масштабирования. Да, знаете?

У меня время моей жизни с чем-то, что я знаю, ужасно просто, я просто не могу понять этот API. Я буду платить 20 долларов всем, кто может мне помочь.

//select * from mysql limit 5 //ok great we got 5 results, great job, format the 5 results so google maps like it, [name,lat,lng] whatever. //put them on the map and let them be clickable so i can put stuff in the infowindow thing //make the map adjust to the proper zoom level and center point 

ОБНОВИТЬ


Это то, что я искал, надеюсь, что это поможет другим.

кредит [Крису B] для формулы здравого смысла математики для получения координаты центра, sw-шнур – это самый низкий лат и lon, а ne-координата – наибольший лат и lon

 sort($lat)&&sort($lon); $r['c'] = array_sum($lat)/count($lat).', '.array_sum($lon)/count($lon); $r['ne'] = $lat[count($lat)-1].', '.$lon[count($lon)-1]; $r['sw'] = $lat[0].', '.$lon[0]; 

 var myOptions = {zoom:4,center: new google.maps.LatLng(<?php echo $r['c']; ?>),mapTypeId:google.maps.MapTypeId.ROADMAP} var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); <?php foreach($x as $l) echo 'new google.maps.Marker({position:new google.maps.LatLng('.$l['lat'].','.$l['lon'].'),map:map,clickable:true});'; ?> map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(<?php echo $r['sw']; ?>),new google.maps.LatLng(<?php echo $r['ne']; ?>))); 

Если средняя / взвешенная точка центра приемлема – вы можете просто усреднить все широты и усреднить все долготы:

 $latTotal = 0; $lngTotal = 0; foreach ($markers as $marker) { $latTotal += $marker['lat']; $lngTotal += $marker['lng']; } $centerLat = $latTotal/count($markers); $centerLng = $lngTotal/count($markers); 

В остальном, в Google есть хорошие учебники V3.

Я использовал Google Maps v3 месяц или два назад, но позже переключился на v2. Однако у меня была такая же проблема, как и вы, поэтому я написал класс MarkerManager для API v3. Я не могу найти последнюю версию своего класса, но я нашел, надеюсь, рабочий. Вы можете получить его здесь .

Я должен предупредить вас, хотя это вообще не оптимизировано и не использует оверлеи, поэтому, когда я пытался помещать 50+ маркеров в менеджер и переключил скрытие / показать, что класс sloooow … Но, может быть, у вас может быть некоторый успех с Это.

Пример использования:

 var map = new google.maps.Map(document.getElementById('MapLayerId'), { zoom: 7, position: new google.maps.LatLng(latitude, longitude), mapTypeId: google.maps.MapTypeId.ROADMAP }); var marker1 = new google.maps.Marker({ position: new google.maps.LatLng(latitude, longitude), map: map }); var marker2 = new google.maps.Marker({ position: new google.maps.LatLng(latitude, longitude), map: map }); var manager = new MarkerManager(map, {fitBounds: true}); manager.add(marker1); manager.add(marker2); manager.show(); 

GDownloadUrl в эквиваленте V2 downloadUrl в GOOGLE MAPS API V3

Как загрузить все координаты в базе данных (Mysql или Sql).

 var myLatlng = new google.maps.LatLng("37.427770" ,"-122.144841"); var myOptions = {zoom: 15, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP,} map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var url='marker.php?arg1=x&arg2=y...'; downloadUrl(url, function(data) { var markers = data.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); var marker = new google.maps.Marker({position: latlng, map: map}); } }); function createXmlHttpRequest() { try { if (typeof ActiveXObject != 'undefined') { return new ActiveXObject('Microsoft.XMLHTTP'); } else if (window["XMLHttpRequest"]) { return new XMLHttpRequest(); } } catch (e) { changeStatus(e); } return null; }; function downloadUrl(url, callback) { var status = -1; var request = createXmlHttpRequest(); if (!request) { return false; } request.open('GET', url); request.onreadystatechange = function() { if (request.readyState == 4) { try { status = request.status; } catch (e) { // Usually indicates request timed out in FF. } if (status == 200) { var s=request.responseText; callback( xmlParse(s) ); } } } try { request.send(null); }catch (e) { changeStatus(e); } }; function xmlParse(str) { if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') { var doc = new ActiveXObject('Microsoft.XMLDOM'); doc.loadXML(str); return doc; } if (typeof DOMParser != 'undefined') { return (new DOMParser()).parseFromString(str, 'text/xml'); } return createElement('div', null); } 

Вы проверили официальную учебную программу google map PHP / Mysql? http://code.google.com/apis/maps/articles/phpsqlajax.html

Попробуйте этот алгоритм для нахождения центроида многоугольника:

http://tog.acm.org/resources/GraphicsGems/gemsiv/centroid.c