2011-03-16 53 views
2
private void initMyLocation() { 
     myLocOverlay = new MyLocationOverlay(this, myMap); 
     myLocOverlay.enableCompass(); 
     myLocOverlay.enableMyLocation(); 
     myMap.getOverlays().add(myLocOverlay); 
     if (myLocOverlay == null) 
    { 
     assignFirstLoc(); 

    } 


if (myLocOverlay != null) 
      { 
       Log.e("error","1"); 
       p = new GeoPoint((int) (myLocOverlay.getMyLocation().getLatitudeE6()), (int) (myLocOverlay.getMyLocation().getLongitudeE6())); 
       mc = myMap.getController(); 
       mc.animateTo(p); 
       mc.setCenter(p); 

      } 

我看到的logcat但在那之後「錯誤1」消息,我採取了一個空指針異常我不知道爲什麼,我相信我檢查myLocOverlay爲空或不是用「如果」塊。任何suggesstions ?MyLocationOverlay問題

編輯:

這是分配firtst值我assignedGFirstLoc方法:

private void assignFirstLoc() 
    { 
     final String coordinates[] = {"41.00527", "28.97696"}; 
     double lat2 = Double.parseDouble(coordinates[0]); 
     double lng2 = Double.parseDouble(coordinates[1]); 
     p = new GeoPoint((int) (lat2 * 1E6), (int) (lng2 * 1E6)); 
     myMap.getController().setZoom(16); 
     myMap.getController().animateTo(p); 
     myMap.getController().setCenter(p); 

    } 
+0

嘗試檢查getMyLocation() – Aswan 2011-03-16 10:39:58

+0

的值如何?我認爲筆記本電腦無法採取任何位置,因爲GPS問題。帶有Toast消息的 – 2011-03-16 11:35:20

+0

我在手機中使用了「null」值。 – 2011-03-16 11:54:09

回答

16

MyLocationOverlay只能用來顯示來自傳感器的位置。 你不能設置它。 你得到一個空指針,因爲MyLocationOverlay.getMyLocation()返回null。傳感器沒有時間去捕捉地理定位。

如果你想顯示的位置時,傳感器得到了你可以做到這一點的數據:

mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() { 
     mapView.getController().animateTo(mMyLocationOverlay.getMyLocation()); 
}}); 

如果你想顯示在任意波形的位置(經度和緯度值)的項目,你需要實現自己的ItemizedOverlay版本 你可以找到SDK文檔中的爲例:Google Map View tutorial,第2部分AddingOverlayItem

如果你只是想顯示在地圖上的任意位置,你不需要覆蓋。只是打電話給你的功能,它會工作:

private void initMyLocation() { 
    assignFirstLoc(); 
} 
+0

Wooow非常感謝你.. – 2011-03-16 15:43:50

1

它看起來像你沒有傳遞任何座標轉換的GeoPoint。除非它在你的代碼中的其他地方。像這樣的作品

String coordinates[] = {"41.146064", "-80.642861"}; 
    double lat = Double.parseDouble(coordinates[0]); 
    double lng = Double.parseDouble(coordinates[1]); 

    p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
+0

是的,你的方式工作,但假設我在別的地方,我不知道確切的座標,所以我不得不使用location.getLatitude()或myLocOverlay.getMyLocation()。getLatitudeE6()方法,但這些方法給出了一個錯誤 – 2011-03-16 11:33:34

+0

你必須有一些方法來確定您的地理位置,如在Android設備上使用GPS位置 – apesa 2011-03-16 13:26:09

+0

Yeap,如果我找到一個好方法;我會寫在這裏.. – 2011-03-16 14:10:46

相關問題