如何在默认导航一个 Geopoint 中设置用户当前位置?
Posted
技术标签:
【中文标题】如何在默认导航一个 Geopoint 中设置用户当前位置?【英文标题】:How to set user current location in default navigation one Geopoint? 【发布时间】:2012-08-23 14:40:59 【问题描述】:我想在我的一个地理点中设置我的当前位置是默认位置。如果我想获取从我当前位置到另一个位置的方向路径,我想在我的一个位置显示默认当前位置。
这是查找用户当前位置的代码:
public class WhereIActivity extends MapActivity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_where_i);
MapView myMapView=(MapView)findViewById(R.id.myMapView);
mapController=myMapView.getController();
myMapView.displayZoomControls(false);
mapController.setZoom(17);
myMapView.setStreetView(true);
myMapView.setTraffic(true);
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria crta = new Criteria();
crta.setAccuracy(Criteria.ACCURACY_FINE);
crta.setAltitudeRequired(false);
crta.setBearingRequired(false);
crta.setCostAllowed(true);
crta.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(crta, true);
// String provider = LocationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
private final LocationListener locationListener = new LocationListener()
@Override
public void onLocationChanged(Location location)
updateWithNewLocation(location);
@Override
public void onProviderDisabled(String provider)
updateWithNewLocation(null);
@Override
public void onProviderEnabled(String provider)
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
;
private void updateWithNewLocation(Location location)
String latLong;
TextView myLocation;
myLocation = (TextView) findViewById(R.id.myLocation);
String addressString = "no address found";
if(location!=null)
positionOverlay.setLocation(location);
Double geoLat=location.getLatitude()*1E6;
Double geoLng=location.getLongitude()*1E6;
GeoPoint point=new GeoPoint(geoLat.intValue(),geoLng.intValue());
mapController.animateTo(point);
double lat = location.getLatitude();
double lon = location.getLongitude();
latLong = "Lat:" + lat + "\nLong:" + lon;
double lattitude = location.getLatitude();
double longitude = location.getLongitude();
Geocoder gc = new Geocoder(this,Locale.getDefault());
try
List<Address> addresses= gc.getFromLocation(lattitude, longitude, 1);
StringBuilder sb = new StringBuilder();
if(addresses.size()>0)
Address address=addresses.get(0);
for(int i=0;i<address.getMaxAddressLineIndex();i++)
sb.append(address.getAddressLine(i)).append("\n");
sb.append(address.getLocality()).append("\n");
sb.append(address.getPostalCode()).append("\n");
sb.append(address.getCountryName());
addressString = sb.toString();
catch (Exception e)
else
latLong = " NO Location Found ";
myLocation.setText("Your Current Position is :\n"+ latLong + "\n"+ addressString );
@Override
protected boolean isRouteDisplayed()
// TODO Auto-generated method stub
return false;
如何在方向路径中设置此用户当前位置默认值:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps/?daddr=my+street+address"));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
【问题讨论】:
【参考方案1】:请仔细阅读此链接。此代码在我的应用程序中成功运行
http://ckpatel.blog.com/category/android-gps/
此代码用于绘制路径,我认为获取位置代码是正确的,但请在移动设备中检查。谢谢
【讨论】:
以上是关于如何在默认导航一个 Geopoint 中设置用户当前位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时在由 android studio 创建的导航抽屉中设置默认片段
如何在 SwiftUI 列表中设置 NavigationLink