Jak mogę znaleźć bliskość widocznego obszaru mojej mapy?Google Maps v3 - Widoczny zasięg mapy w milach
Wszystko to działa i jest postem, aby pomóc innym, którzy mogą wyglądać.
Ten kod wygląda na Twojej mapie Google v3, a wyniki według var zbliżają się do promienia w milach od bieżącego widoku mapy.
Upewnij w HTML masz
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=geometry"></script>
jako biblioteki = geometria pozwala na to.
// Get Gmap radius/proximity start
var bounds = new google.maps.LatLngBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var proximitymeter = google.maps.geometry.spherical.computeDistanceBetween (sw, ne);
var proximitymiles = proximitymeter * 0.000621371192;
alert(" " + proximitymiles + " Miles Proximity");
var proxmity = proximitymiles;
// Get Gmap radius/proximity End
Mam nadzieję, że komuś pomaga.
Dodatkowym edit (niesprawdzone), która pozwala na obracanie ekranu w następujący sposób:
// Get Gmap radius/proximity start
var bounds = new google.maps.LatLngBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var se = bounds.getSouthEast();
var nw = bounds.getNorthWest();
var proximitymeterswne = google.maps.geometry.spherical.computeDistanceBetween (sw, ne);
var proximitymetersenw = google.maps.geometry.spherical.computeDistanceBetween (se, nw);
if (proximitymeterswne > proximitymetersenw) {proximitymeterswne = proximitymiles}
else {if (proximitymetersenw > proximitymeterswne) {proximitymetersenw = proximitymiles};};
var proximitymiles = proximitymeter * 0.000621371192;
alert(" " + proximitymiles + " Miles Proximity");
var proxmity = proximitymiles;
// Get Gmap radius/proximity End
Kolejny EDIT
// Watches for map bounds change - if so - set radius and refresh data Start
function setproximityfrommap() {
// http://stackoverflow.com/questions/3525670/radius-of-viewable-region-in-google-maps-v3
// Get Gmap radius/proximity start
var bounds = new google.maps.LatLngBounds();
// bounds = map.LatLngBounds();
//center = new google.maps.LatLng();
ne = bounds.getNorthEast();
center = map.getCenter();
//var center = map.LatLngBounds.getCenter();
//var ne = map.LatLngBounds.getNorthEast();
// r = radius of the earth in statute miles
var r = 3963.0;
// Convert lat or lng from decimal degrees into radians (divide by 57.2958)
var lat1 = center.lat()/57.2958;
var lon1 = center.lng()/57.2958;
var lat2 = ne.lat()/57.2958;
var lon2 = ne.lng()/57.2958;
// distance = circle radius from center to Northeast corner of bounds
proximity = r * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1));
$('#proximity').val(proximity);
// Get Gmap radius/proximity End
};
kładę zmodyfikowany kod w pierwszym poście.
Terran
+1 Lubię swoją hojną podejście! Ale, aby pozostać w stylu Q & A witryny, proponuję opublikować cel w pytaniu i rozwiązanie jako odpowiedź, a następnie zaakceptować (nawet jeśli jest to twoje). Dzięki;) – bluish
Dzięki - zrobię - Nie byłem pewien, co to etyk było;) –
Mogę zrobić z dodaniem czeku za pomocą innych narożników, ponieważ jest to dla aplikacji na telefon, który może być odwrócony (orientacja mądra), jak również. W oparciu o odczyty przyjmujące największą liczbę jako bliskość do użycia. –