2015-03-25 185 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

相关问题