2012-01-25 65 views
0

我想要做的是試圖計算給定位置的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); 
+0

在何種意義上是一種更簡單的方式 「不工作」?不編譯,給出運行時錯誤,給出意想不到的結果,或...? Java部分不工作還是JavaScript部分? (或者兩者兼而有之?)JavaScript看起來無效,特別是你不能在變量名稱中使用感嘆號,就像你用'$!swLatLng'完成的那樣。 – nnnnnn

+0

顯示整個地球 –

+0

$表示我正在使用速度視圖 –

回答

0

錯誤標誌(以下它們被糾正):

//Calculating SW 
minLat = userLocation.getLatitude() - latDelta; 
minLng = userLocation.getLongitude()- lngDelta; 


//Calculating NE 
maxLat = userLocation.getLatitude() + latDelta; 
maxLng = userLocation.getLongitude()+ lngDelta; 

但是你一定要告訴的問題是什麼,以及是否瀏覽器錯誤控制檯中有錯誤消息。

PS:有是API V3 https://stackoverflow.com/a/2205577/1164491

+0

問題是顯示整個地球 –

+0

@Faisal khan您是否有鏈接到頁面?或者自己檢查計算的變量的值。順便說一句,看看這裏 - API 3允許自動執行http://stackoverflow.com/questions/1556921/google-map-api-v3-set-bounds-and-center – Cheery

+0

它現在完美了,謝謝:) –