Google Maps v3 - видимый радиус карты в милях - PullRequest
13 голосов
/ 03 февраля 2012

Как я могу найти близость видимой области моей карты?

Все это работает и является постом, чтобы помочь другим, кто может искать.

Этот код просматривает вашу карту Google v3 и выводит на переменную близость к радиусу в милях от текущей карты.

Убедитесь, что в вашем HTML у вас есть

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=geometry"></script>

, поскольку библиотеки = геометрия позволяет это.

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

Надеюсь, это кому-нибудь поможет.

Следующее дополнительное редактирование (непроверенное), которое позволяет вращать экран, следует:

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

Другой РЕДАКТИРОВАТЬ

// Watches for map bounds change - if so - set radius and refresh data Start
function setproximityfrommap() {
    // /2762006/radius-vidimoi-oblasti-v-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
};

Я отредактировал отредактированный код в первом посте.

Terran

1 Ответ

10 голосов
/ 09 августа 2012
// Watches for map bounds change - if so - set radius and refresh data Start
function setproximityfrommap() {
    // /2762006/radius-vidimoi-oblasti-v-google-maps-v3
    // Get Gmap radius / proximity start
    // First, determine the map bounds
    var bounds = map.getBounds();

    // Then the points
    var swPoint = bounds.getSouthWest();
    var nePoint = bounds.getNorthEast();

    // Now, each individual coordinate
    var swLat = swPoint.lat();
    var swLng = swPoint.lng();
    var neLat = nePoint.lat();
    var neLng = nePoint.lng();

    var proximitymeter = google.maps.geometry.spherical.computeDistanceBetween(swPoint, nePoint);
    var proximitymiles = proximitymeter * 0.000621371192;
    proxmity = proximitymiles;
    console.log("Proxmity " + proximitymiles + " miles");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...