2014-11-24 42 views
1

當試圖設置新的LatLngBounds時,對於世界的西南季度,西南經度自動設置在世界的另一側,導致LatLngBounds不一致(西南更比東部東北部)無法設置經度從-180到0的LatLngBounds

a = new google.maps.LatLng(-90, -180, true); 
a.lng(); 
=> -180 
b = new google.maps.LatLng(0, 0, true); 
c = new google.maps.LatLngBounds(a, b); 
c.getSouthWest().lng(); 
=> 180 

的問題似乎不是在經緯度,但多在的LatLngBounds。他們是否有其他參數或其他方式來做到這一點,因此它可以代表這個世界的這個季度?

測試更多的參數,僅西南經度總是被設置爲-180:http://jsfiddle.net/vr6ztq9z/1/

+0

你試過-179.9(或東西比-180略少)? – geocodezip 2014-11-24 15:45:53

+0

@geocodezip是的,這將按預期工作,但是有什麼限制?我很想成爲這個季度。對於google.maps.LatLng類,它說「經度範圍在-180和180度之間,包括」,所以我希望LatLngBounds是相同的。但沒有明確的說明.https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds – challet 2014-11-24 17:06:26

+0

您可以在[問題跟蹤器](https://code.google。 COM/p/gmaps-API的問題/)。 – geocodezip 2014-11-24 19:34:36

回答

1

緯度:

在一個墨卡託投影,最大北緯不是90,但周圍的東西85.05113。在JavaScript中,你可以這樣做:

Math.atan(Math.sinh(Math.PI)) * 180/Math.PI; 

這樣你可以找到真正的北部和南部邊緣投影

經度:

什麼是-180和180經度之間的區別?沒有。

,您仍然可以識別所有4個季度的投影的:

var maxLat = Math.atan(Math.sinh(Math.PI)) * 180/Math.PI; 

var center = new google.maps.LatLng(0, 0); 
var sw = new google.maps.LatLng(-maxLat, 180); 
var ne = new google.maps.LatLng(maxLat, -180); 

// Southwest part of the world 
new google.maps.LatLngBounds(sw, center); 

// Southeast part of the world 
new google.maps.LatLngBounds(center, sw); 

等。

JSFiddle demo

+0

經度-180和180之間有什麼區別?沒有。我知道,但谷歌沒有:bounds.contains(新google.maps.LatLng(-45,-90))=>假 – challet 2014-11-24 22:55:42

+0

更新jsfiddle與maxLat值。感謝您的改善http://jsfiddle.net/vr6ztq9z/3/ – challet 2014-11-24 23:02:18

+0

什麼時候是錯誤的?檢查控制檯:http://jsfiddle.net/upsidown/urtuoLsp/5/ – MrUpsidown 2014-11-24 23:03:35