我正在使用mapView和LocationManager制作一个小应用程序。 我的LocationManager应该收听该位置并通知我的位置是否因用户定义的容差而变化。 如果我的LocationManager发现位置发生变化,则应发送短信。
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 :(得分:0)
根据this SO post GeoPoint
可能会错误地构建,这可能会导致错误的位置。对于LocationManager
,requestLocationUpdates
方法只运行一次,这意味着它在运行方法时采用EditText's
值,除非您告诉它,否则它不会更新。 LocationManager
类中可能有一个方法可以做到这一点。
修改强>
忽略有关GeoPoint的部分,在进一步阅读时,将long / lat乘以1000000是正确的