2012-02-03 14 views
13

で表示可能なマップの半径はどうやってマップの表示領域の近接性を見つけることができますか?GoogleマップV3 - マイル

このすべてが動作し、探しても他の人を助けるためにポストです。

このコードはVAR近接して、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 

別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 
}; 

私が最初の記事で編集したコードを置きます。

テラン

+2

+1私はあなたの寛大なアプローチが好き!しかし、サイトのQ&Aスタイルを維持するためには、質問と解決策の回答を回答として投稿し、それを受け入れることをお勧めします(あなたのものであっても)。感謝;) – bluish

+0

おかげで - 私は何だろう - eticateが何であったか波平確認を;)私はこのように、他のコーナーを使用してチェックを追加することで行うことができ –

+0

も同様)(周りの向きが賢明を回すことができ、電話でのアプリのためです。使用する近接度として最大の数値を取る測定値に基づいています。 –

答えて

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"); 
} 
関連する問題