android-eclipse:使用gps获得的坐标显示谷歌地图
我正在尝试创建一个应用程序,通过gps获取用户位置,在谷歌地图中显示用户位置,然后在一定时间/移动后更新 我目前有一个应用程序,可以通过gps获取用户的位置,并每10米/10000毫秒更新一次,但目前它所做的只是显示坐标。我已经将其设置为连接到谷歌地图,但现在它只是将地图设置为我自己手动输入的一些坐标 我如何获得它,以便地图根据通过gps获得的坐标显示位置 任何帮助都将不胜感激,我对这一切都很陌生 编辑:这是到目前为止我的代码android-eclipse:使用gps获得的坐标显示谷歌地图,android,eclipse,google-maps,gps,Android,Eclipse,Google Maps,Gps,我正在尝试创建一个应用程序,通过gps获取用户位置,在谷歌地图中显示用户位置,然后在一定时间/移动后更新 我目前有一个应用程序,可以通过gps获取用户的位置,并每10米/10000毫秒更新一次,但目前它所做的只是显示坐标。我已经将其设置为连接到谷歌地图,但现在它只是将地图设置为我自己手动输入的一些坐标 我如何获得它,以便地图根据通过gps获得的坐标显示位置 任何帮助都将不胜感激,我对这一切都很陌生 编辑:这是到目前为止我的代码 package com.android.basicmap; imp
package com.android.basicmap;
import com.google.android.maps.MapActivity;
import android.os.Bundle;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
public class BasicMapActivity extends MapActivity {
private MapView mapView;
private MapController mapController;
private LocationManager locationManager;
private LocationListener locationListener;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0,
locationListener);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setStreetView(true);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
mapController.setZoom(16);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
private class GPSLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location location) {
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
Toast.makeText(getBaseContext(),
"Latitude: " + location.getLatitude() +
" Longitude: " + location.getLongitude(),
Toast.LENGTH_SHORT).show();
mapController.animateTo(point);
mapController.setZoom(16);
mapView.invalidate();
}
}
}
}假设您使用的是
MapView
,最简单的方法是在地图中添加MyLocationOverlay
的实例,因为Android将为您显示用户的位置
map=(MapView)findViewById(R.id.whatever_your_mapview_id_is);
map.getOverlays().add(new MyLocationOverlay(this, map));
如果出于某种原因,您希望自己执行此操作,而不是使用内置功能,则可以创建自己的
ItemizedOverlay
来显示该点,并将自己的自定义覆盖实例添加到MapView
这是一个完整的教程:
但拜托,我发现通过输入“android如何在谷歌地图上显示gps位置”,请更彻底地搜索谷歌,并在发布这些简单问题之前浏览教程:)如果你想显示用户的当前位置,最好使用MyLocationOverlay。但是,您可以选择:
map.animateTo(GeoPoint);
假设您已经定义了mapview和mapcontroller 为此,首先需要在OnCreate方法中使用位置更新,如下所示:下面的代码请求每1000毫秒或10米更新一次
LocationManager lm;
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10f, this);
下面是我在地图上更新位置的方法
@Override
GeoPoint p,P2, p3;
double lat=53, double lng=4;
public void onLocationChanged(Location location) {
Log.v(tag, "Location Changed");
lat= (int) (location.getLatitude());
lng= (int) (location.getLongitude());
sb = new StringBuilder(512);
noOfFixes++;
p = new GeoPoint(
(int) (location.getLatitude()*1E6),
(int) (location.getLongitude()*1E6));
mapController.animateTo(p);
mapController.setCenter(p);
Toast.makeText(this, "Lat= " + lat + " Long= " + lng, Toast.LENGTH_SHORT).show();
}
大家好,欢迎来到Stack Overflow!如果包含一些相关的代码片段,您将有更好的机会得到问题的答案。例如,您提到位置更新工作正常,但地图更新部分不工作。包含
Map
类中的相关片段可能是一个不错的主意。本教程正是我想要的,遗憾的是,我已经尝试了好几次来完成它,但我无法让它工作!不管怎样,谢谢你发布它。它在不工作的时候说了什么?让我们了解一下:)如果答案是令人满意的,请考虑把它标记为“接受”-点击左边的小复选标记。我已经完成了教程的第一部分:添加地图和缩放控件,这是下一部分。“添加gps定位”这会给我带来很多错误!我已经在我原来的帖子中更新了我的代码,告诉你我在教程中到目前为止的位置,也许你可以看到我哪里出了问题!许多感谢您也发布了错误,这将有助于发现问题我在私有类GPSLocationListener中遇到错误:此行有多个标记-TESTActivity.GPSLocationListener类型必须实现继承的抽象方法LocationListener.onProviderDisabled(String)-类型TESTActivity.GPSLocationListener必须实现继承的抽象方法LocationListener.onStatusChanged(String,int,Bundle)-类型TESTActivity.GPSLocationListener必须实现继承的抽象方法LocationListener.onProviderEnabled(String)我已经尽我所能使用了你的代码,但我仍然无法让它工作!我已经编辑了我的文章来包含我的代码,我不知道这是否能让你更好地了解我的错误所在!非常感谢你的帮助。