2013-05-16 3 views
0

У меня есть набор пользовательских местоположений, и у меня есть веб-страница.Как я могу сопоставить произвольные точки на карте google?

На моей веб-странице у меня есть действующая карта Google (с использованием v3 API).

Если вы укажете адрес, он будет центрировать себя по этому адресу. Ничего захватывающего.

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

Может кто-нибудь указать мне ссылку API для этого? Я знаю, что это не сложно, но для жизни я не могу найти хорошую ссылку или пример.

ответ

0

Это оказалось довольно легко с помощью маркеров

computeDistanceBetween 

more info here

. Функция AddCustomLocationsToMap выполняет настоящую работу ниже. Благодаря this blog post для начальной точки.

function FocusMapOnAddress(address) { 
    var mapCenter; 
    geocoder.geocode({ 'address': address }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      cdamap.setCenter(results[0].geometry.location); 
      mapCenter = results[0].geometry.location; 
      var marker = new google.maps.Marker({ 
       map: cdamap, 
       position: mapCenter 
      }); 
     } else { 
      alert("Address could not be resolved due to an error: " + status); 
     } 
    }); 

    //if we actually know where they are (i.e., valid address) then zoom and show locations 
    if (mapCenter != null) { 
     AddCustomLocationsToMap(); 
     SetMapZoomLevel(mapCenter, SearchRadiusInMeters()); 
    } 
} 

var locations = [ 
    ['High Park', 43.6516699, -79.4652915, 4,'Our High Park Office is open from 9am - 5pm'], 
    ['King Street CDA Office', 32.775692, -79.932863, 5,'Our King Stret Office is open from 8am - 4pm'], 
    ['Cronulla Beach', -34.028249, 151.157507, 3,''], 
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 2,''], 
    ['Maroubra Beach', -33.950198, 151.259302, 1,''] 
]; 

function AddCustomLocationsToMap() { 
    //show custom locations, pulled from the "locations" array 
    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: cdamap 
     }); 

     google.maps.event.addListener(marker, 'click', (function (marker, i) { 
      return function() { 
       infowindow.setContent(HTMLForLocation(i)); 
       infowindow.open(cdamap, marker); 
      } 
     })(marker, i)); 
    } 
} 

function HTMLForLocation(idx) { 
    //return HTML for display to the user when they click on the specified location 
    var selectedLocation = locations[idx]; 
    if (selectedLocation != null) { 
     return '<b>' + locations[idx][0] + '</b>' + '<br/>' + locations[idx][4]; 
    } 
    else { 
     return "Unknown location"; 
    } 
} 
+1

Почему бы вам не принять ваш ответ? – alkis

+1

спасибо за напоминание – JosephStyons

0

Вы можете рассчитать расстояние между двумя точками больше о библиотеке геометрии here

Смежные вопросы