2012-02-03 37 views
13

Làm thế nào tôi có thể tìm thấy sự gần gũi của vùng hiển thị của bản đồ của tôi?Google Maps v3 - Bản đồ bán kính thể xem trong dặm

Tất cả công việc này và là bài đăng để giúp những người khác có thể đang tìm kiếm.

Mã này nhìn vào Google Map v3 và kết quả đầu ra của bạn bằng cách var gần bán kính trong dặm xem bản đồ hiện tại của bạn.

Hãy chắc chắn rằng trong HTML của bạn, bạn có

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

như thư viện = hình học cho phép nó.

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

Tôi hy vọng nó sẽ giúp ai đó.

Một chỉnh sửa bổ sung (chưa được kiểm tra) mà cho phép xoay màn hình sau:

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

Một 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 
}; 

Tôi đặt mã chỉnh sửa trong bài viết đầu tiên.

Terran

+2

+1 Tôi thích cách tiếp cận rộng rãi của bạn! Tuy nhiên, để duy trì phong cách Hỏi & Đáp của trang web, tôi khuyên bạn nên đăng mục tiêu trong câu hỏi và giải pháp làm câu trả lời và sau đó chấp nhận câu trả lời (ngay cả khi đó là của bạn). Cảm ơn;) – bluish

+0

Cảm ơn - Tôi sẽ làm - Không chắc chắn những gì eticate được;) –

+0

Tôi có thể làm với việc thêm một kiểm tra bằng cách sử dụng các góc khác như thế này là dành cho một ứng dụng trên điện thoại có thể được quay xung quanh (định hướng khôn ngoan). Dựa trên các bài đọc lấy số lớn nhất là khoảng cách sử dụng. –

Trả lời

10
// 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 
    // 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"); 
} 
Các vấn đề liên quan