android-eclipse:使用gps获得的坐标显示谷歌地图

android-eclipse:使用gps获得的坐标显示谷歌地图,android,eclipse,google-maps,gps,Android,Eclipse,Google Maps,Gps,我正在尝试创建一个应用程序,通过gps获取用户位置,在谷歌地图中显示用户位置,然后在一定时间/移动后更新 我目前有一个应用程序,可以通过gps获取用户的位置,并每10米/10000毫秒更新一次,但目前它所做的只是显示坐标。我已经将其设置为连接到谷歌地图,但现在它只是将地图设置为我自己手动输入的一些坐标 我如何获得它,以便地图根据通过gps获得的坐标显示位置 任何帮助都将不胜感激,我对这一切都很陌生 编辑:这是到目前为止我的代码 package com.android.basicmap; imp

我正在尝试创建一个应用程序,通过gps获取用户位置,在谷歌地图中显示用户位置,然后在一定时间/移动后更新

我目前有一个应用程序,可以通过gps获取用户的位置,并每10米/10000毫秒更新一次,但目前它所做的只是显示坐标。我已经将其设置为连接到谷歌地图,但现在它只是将地图设置为我自己手动输入的一些坐标

我如何获得它,以便地图根据通过gps获得的坐标显示位置

任何帮助都将不胜感激,我对这一切都很陌生

编辑:这是到目前为止我的代码

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)我已经尽我所能使用了你的代码,但我仍然无法让它工作!我已经编辑了我的文章来包含我的代码,我不知道这是否能让你更好地了解我的错误所在!非常感谢你的帮助。