2015-03-25 119 views
0

Good Day.Im嘗試使用map.getMyLocation()獲取當前位置,但肯定會收到NullPointerException,因爲我的位置未加載一段時間。所以我正在執行MapReady檢查和MapLoaded檢查哪些觸發器一旦映射就緒,並加載,但不幸的是我的當前位置,似乎我永遠不會知道它什麼時候available.Here是我的代碼片段,我可能會做普通的空檢查。Android Google Maps Api v2當前位置Null

  @Override 
        public void onMapLoaded() { 
     //here my map is loaded so this triggers. 
    if(map.getMyLocation()!=null){ 
//do something here. 

    } 
     } 

但似乎因爲一旦我上面寫的方法觸發它不等待我的,如果條件我的空檢查就永遠不會只是工作的只是檢查,如果它沒有滿足我的,如果條件只是在看它,所以我的如果條件從來沒有觸發。問題是,我怎麼能通知當我的位置啓用?我甚至試圖把這個到while()循環,但它的凍結,如果我在UI thread做,並且不會讓我做任何事情,如果我在一個THREAD因爲谷歌地圖需要在MainThread上完成。所以我的問題是接下來,我可以通知世界上我的位置是否爲空或不是?我怎樣才能觸發一段代碼,一旦它不是NULL

+0

意味着你要檢查您的GPS設備是打開還是關閉? – 2015-03-25 07:18:15

+0

不,我事先做了檢查,意味着我無法預測當前位置的藍色圓圈何時可用,但似乎GOOGLE'CLEVER'的大腦沒有得到這一點,所以我需要一旦觸發藍色當前位置的圈顯示在地圖上,我無法在Google地圖API中找到.. – 2015-03-25 07:33:01

+0

好的,當地圖加載時,您想要轉到您的當前位置? – 2015-03-25 07:36:40

回答

0

我使用此代碼在我的應用..
嘗試實現這一點,你應用程式

//Global Declaration 
    GoogleMap googleMap; 
     LocationManager locationManager; 
     Location location; 
     CameraUpdate cameraUpdate; 

     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
         location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

         if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 

          location = googleMap.getMyLocation(); 
          if (location != null) { 
           LatLng latLang = new LatLng(location.getLatitude(), location.getLongitude()); 
           cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLang, 17); 
           googleMap.animateCamera(cameraUpdate); 
          } else { 

           AlertDialog.Builder builder = new AlertDialog.Builder(MapScreen.this); 
           builder.setTitle("Warning"); 
           builder.setMessage("Location Not Found...!!!"); 
           builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

            @Override 
            public void onClick(DialogInterface dialog, int which) { 

            } 
           }).show(); 
          } 
         } else { 
          showAlertDialog(); 


     } 

private void showAlertDialog() { 

     AlertDialog.Builder builder = new AlertDialog.Builder(MapScreen.this); 
     builder.setTitle("Warning"); 
     builder.setMessage("Device GPS is currently OFF. Please Turn ON."); 
     builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 

      } 
     }).show(); 

    } 
+0

謝謝,在我實現這個問題之前,這個代碼會觸發,直到當前位置啓用?或者將java運行此代碼並查看當前位置是否爲空並且傳遞條件? – 2015-03-25 07:51:52

+0

執行此代碼並調試此代碼您會很容易地找到您的答案:) :) – 2015-03-25 08:02:13

+0

非常感謝。不是我在找什麼,雖然我剛剛實施並提出警告,該位置將自動更新:D unfrotunatally它不是我們的問題它的GOOGLES愚蠢的谷歌開發人員問題..你可以產生這樣的apis ....它無論如何感謝你非常感謝您的幫助 – 2015-03-25 08:15:39

相關問題