Слегка измените lat / lng для gmap api v3 - PullRequest
0 голосов
/ 20 ноября 2010

Есть быстрый вопрос.На моем сайте есть форма, которая позволяет пользователям вводить свой город, штат и страну.Эта информация преобразуется в $ lat и $ lng, которые используются для создания маркера на карте Google.Проблема в том, что у меня есть несколько пользователей, которые выбирают один и тот же город.Кластеризация - ОГРОМНАЯ боль ... честно говоря, я не могу найти хороший учебник, и я чувствую себя немного безнадежно.

Так что я решил просто изменить каждый $ lat и $СлегкаНапример, это информация, которую я получаю для Travis AFB, CA: lat = "38.263065" lng = "- 121.949699".Интересно, можно ли добавить немного кода, который может позволить мне изменить эти последние биты?Любые предложения ???

Вот как я геокодирую адрес $ (комбинация $ city, $ state, $ country):

<code>
$geocodestring=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=' . urlencode($address) );
$geocodedinfo=json_decode($geocodestring);</p>

<p>$lat = $geocodedinfo->results[0]->geometry->location->lat;
$lng = $geocodedinfo->results[0]->geometry->location->lng;

И этоинформация поступает в мою базу данных SQL.Это код, который на самом деле создает карту (довольно просто).

<code></p>

<p>function load() {
  if (GBrowserIsCompatible()) {
 var map = new GMap2(document.getElementById("map"));
 map.addControl(new GSmallMapControl());
 map.addControl(new GMapTypeControl());
 map.setCenter(new GLatLng(47.614495, -122.341861), 2);
 map.enableScrollWheelZoom();</p>

<p>GDownloadUrl("world_xml.php", function(data) {
   var xml = GXml.parse(data);
   var markers = xml.documentElement.getElementsByTagName("marker");
   for (var i = 0; i < markers.length; i++) {
  var first_name = markers[i].getAttribute("first_name");
  var last_name = markers[i].getAttribute("last_name");
  var email = markers[i].getAttribute("email");
  var affiliation = markers[i].getAttribute("affiliation");
  var status = markers[i].getAttribute("status");
  var service = markers[i].getAttribute("service");
  var rank = markers[i].getAttribute("rank");
  var specialty = markers[i].getAttribute("specialty");
  var city = markers[i].getAttribute("city");
  var state = markers[i].getAttribute("state");
  var country = markers[i].getAttribute("country");
  var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lng")));
  var marker = createMarker(point, rank, first_name, last_name, email, affiliation, status, service, specialty, city, state, country);
  map.addOverlay(marker);
   }
 });
  }
}</p>

<p>function createMarker(point, rank, first_name, last_name, email, affiliation, status, service, specialty, city, state, country) {
  var marker = new GMarker(point);
  var html = "<b>" + rank + " " + first_name + " " + last_name + "</b> <br/>" + service + ", " + status + " <br/>" + specialty + " <br/>" + affiliation + " <br/>" + city + ", " + state + " " + country + " <br/>" + email + " <br/>" + " ";
  GEvent.addListener(marker, 'click', function() {
 marker.openInfoWindowHtml(html);
  });
  return marker;
}

Любая помощь / предложения будут высоко оценены !!!

Джереми

1 Ответ

0 голосов
/ 05 декабря 2010

markerclusterer для v2 может решить вашу проблему.

Найдите код и примеры здесь

http://google -maps-utility-library-v3.googlecode.com / svn / tags/markerclusterer/1.0/

...