Google Maps API v3 – PHP – MYSQL

GOOGLE MAPS API V3 es lo que trato de usar.

Tengo todas las coordenadas en mysql. Simplemente, por ejemplo, necesito tomar 5 listas y ponerlas en un mapa, pero me gustaría poder encontrar el punto central en función de las múltiples coordenadas que me gustaría mostrar, y el nivel de zoom también. Sí, ¿sabes?

Estoy teniendo el mejor momento de mi vida con algo que sé que es terriblemente simple, simplemente no puedo entender esta API. Pagaré $ 20 a cualquiera que pueda ayudarme.

//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 

ACTUALIZAR


Esto es lo que estaba buscando, espero que esto ayude a otros.

crédito a [Chris B] por la fórmula matemática de sentido común para obtener el centro coord, el cordón sw es el más bajo lat y lon, y el coord coordinador es el mayor lat y 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(),mapTypeId:google.maps.MapTypeId.ROADMAP} var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);  map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(),new google.maps.LatLng())); 

Si un punto central promedio / ponderado es aceptable, puede promediar todas las latitudes y promediar todas las longitudes:

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

Para el rest, hay algunos buenos tutoriales de V3 en Google .

Estaba usando Google Maps v3 uno o dos meses atrás, pero luego cambié a v2. Sin embargo, tuve el mismo problema que tú, así que escribí una clase MarkerManager para API v3. No puedo encontrar la última versión de mi clase, pero encontré una, con suerte, una. Puedes obtenerlo aquí .

Sin embargo, tengo que advertirte: no está optimizado en absoluto y no está usando superposiciones, así que cuando intenté poner más de 50 marcadores en el administrador y alteré el ocultar / mostrar, la clase es lenta … Pero tal vez puedas tener algún éxito con eso.

Ejemplo de uso:

 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 en la descarga equivalente de V2 en GOOGLE MAPS API V3

Cómo cargar todas las coordenadas en la base de datos (Mysql o 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); } 

¿Has consultado el tutorial PHP / Mysql del mapa oficial de google? http://code.google.com/apis/maps/articles/phpsqlajax.html

Pruebe este algoritmo para encontrar el centroide de un polígono:

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