2012-06-04 47 views
1

我正在使用mapView和LocationManager创建一个小的Android应用程序。 我的LocationManager应侦听位置并通知我的位置是否在用户定义的容差范围内发生变化。 如果我的LocationManager注意到一个位置发生变化,它应该发送一条短信。使用locationMangager获取错误的gps位置android

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, Float.parseFloat(txtToleranz.getText().toString()), this); 

在这里,我不知道,如果方法requestLocationUpdates需要始终文本字段或仅给定初始值的当前值...?

另外我的应用程序应该显示我在mapView中的位置,但是位置完全错误...为什么?我正在真实设备上运行我的应用程序。

   double lat = location.getLatitude(); 
      double lng = location.getLongitude(); 

      String currentLocation = " Lat: " + lat + " Lng: " + lng + " Tol: " + Toleranz; 
      point = new GeoPoint((int) lat * 1000000, (int) lng * 1000000); 
      mapController.animateTo(point); 
      mapController.setZoom(15); 
      System.out.println(currentLocation); 

谢谢任何​​帮助! 最好的问候丹尼尔

回答

0

根据this SO postGeoPoint可能构造不正确,这可能会导致一个不正确的位置。至于LocationManagerrequestLocationUpdates方法只能运行一次,这意味着该方法运行时取值为EditText's,除非您告诉它,否则它不会更新。在LocationManager类中可能有一种方法可以做到这一点。

编辑

忽略有关GeoPoint的一部分,在进一步阅读你是在乘以1000000

+0

乘以你的长/ LAT正确的你有一个想法如何与GeoPoint的更好的工作或类似的东西这个? – Daniel05

+0

为什么你不把lat/long传递给用户地图应用程序并获取它来显示它?我用类似峰会'意图地图=新意图(android.content.Intent.ACTION_VIEW, \t \t \t \t \t Uri.parse( “地理:0,0 Q =” +纬度+”, “+经度+”(你的地点)”)); \t \t \t \t \t maps.setClassName(“com.google.android.apps.maps”,“com.google.android.maps.MapsActivity”); \t \t \t \t \t startActivity(maps);'before。它运作良好。 – dotty

+0

我应该在哪里实施?哪种方法? – Daniel05