我想要做的是試圖計算給定位置的SW,NE,然後用用戶的中心位置計算delta。這將導致所有位置和用戶位置居中。Java/Javascript計算用戶位置在中心的fitbounds SW/NE
但不幸的是它不工作任何一個快速的建議?
public void calculateMapFitBounds(GeoLocation userLocation, List<GeoLocation > contents, Map<String, GeoLocation> latlngBounds){
//SW
double minLat = userLocation.getLatitude();
double minLng = userLocation.getLongitude();
//NE
double maxLat = -9999;
double maxLng = -9999;
for(GeoLocation content: contents){
/*
* Populating Top left cordinate (SW)
*/
minLat = Math.min(minLat, content.getLatitude());
minLng = Math.min(minLng, content.getLongitude());
/*
* Populating Bottom right cordinate (NE)
*/
maxLng = Math.max(maxLng, content.getLongitude()) ;
maxLat = Math.max(maxLat, content.getLatitude());
}
/*
* Calculating Delta fit bounds
*/
double latDelta = Math.max(Math.abs(minLat - userLocation.getLatitude()), Math.abs(maxLat-userLocation.getLatitude()));
double lngDelta = Math.max(Math.abs(maxLng - userLocation.getLongitude()), Math.abs(minLng - userLocation.getLongitude()));
//Calculating SW
minLat = userLocation.getLatitude()+ latDelta;
minLng = userLocation.getLongitude()+ lngDelta;
latlngBounds.put("swLatLng", new GeoLocation(minLat, minLng));
//Calculating NE
maxLat = userLocation.getLatitude()- latDelta;
maxLng = userLocation.getLongitude()-lngDelta;
latlngBounds.put("neLatLng", new GeoLocation(maxLat, maxLng));
}
在JavaScript後來我想使用如下
var swLatLn = new google.maps.LatLng($!swLatLng.latitude, $!swLatLng.longitude, false);
var neLatLn = new google.maps.LatLng($neLatLng.latitude, $neLatLng.longitude, false);
var bounds = new google.maps.LatLngBounds(swLatLn, neLatLn);
googleMap.fitBounds(bounds);
在何種意義上是一種更簡單的方式 「不工作」?不編譯,給出運行時錯誤,給出意想不到的結果,或...? Java部分不工作還是JavaScript部分? (或者兩者兼而有之?)JavaScript看起來無效,特別是你不能在變量名稱中使用感嘆號,就像你用'$!swLatLng'完成的那樣。 – nnnnnn
顯示整個地球 –
$表示我正在使用速度視圖 –