Java 获取用户当前位置并在谷歌地图中确定

Java 获取用户当前位置并在谷歌地图中确定,java,android,google-maps,Java,Android,Google Maps,我想问你:我在我的应用程序中使用谷歌地图,当我打开包含我希望确定用户当前位置的地图的活动时,我正在使用此代码检索当前用户位置 public void locat () { //Use the LocationManager class to obtain GPS locations LocationManager mlocManager = (LocationManager)getSystemService(Context.LO

我想问你:我在我的应用程序中使用谷歌地图,当我打开包含我希望确定用户当前位置的地图的活动时,我正在使用此代码检索当前用户位置

         public void locat ()
        {
       //Use the LocationManager class to obtain GPS locations 

        LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        LocationListener mlocListener = new MyLocationListener();


        mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);


        }


        // Class My Location Listener 

        public class MyLocationListener implements LocationListener

        {

        @Override

        public void onLocationChanged(Location loc)

        {

        loc.getLatitude();

        loc.getLongitude();

        String Text = "My current location is: " + "Latitud = " + loc.getLatitude() +"Longitud = " + loc.getLongitude();


        Toast.makeText( getApplicationContext(),

        Text,

        Toast.LENGTH_SHORT).show();

        }


        @Override

        public void onProviderDisabled(String provider)

        {

        Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();

        }


        @Override

        public void onProviderEnabled(String provider)

        {

        Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

        }


        @Override

        public void onStatusChanged(String provider, int status, Bundle extras)

        {


        }

        }// End of Class MyLocationListener */

但它只是给我纬度和经度,这不是我想要的!我想确定用户在谷歌地图中的当前位置!我怎么做?你需要我的代码来谷歌地图吗?请帮帮我!谢谢您

您可以使用地理uri打开谷歌地图,如下所示:

    String url = "geo:48.200927,16.369548,192";
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
编辑:似乎您需要反向地理编码。以下是一个例子:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);

以下是android Geocoder类的文档-

您可以使用地理uri打开谷歌地图,如下所示:

    String url = "geo:48.200927,16.369548,192";
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
编辑:似乎您需要反向地理编码。以下是一个例子:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);

这是android Geocoder类的文档-

如果我正确理解了您的问题,您希望获得用户的当前位置并在地图上显示它。有了纬度和经度值,只需构造一个地质点并在地图上设置该位置的动画即可。如果需要,还可以向地图添加自定义覆盖。下面的内容应该会有所帮助

double lat = location.getLatitude();
double longi = location.getLongitude();
long time = location.getTime();
GeoPoint currentGeo = new GeoPoint(toMicroDegrees(lat), toMicroDegrees(longi));
MapController controller = map.getController();
controller.animateTo(currentGeo);

如果我正确理解您的问题,您希望获得用户的当前位置并在地图上显示它。有了纬度和经度值,只需构造一个地质点并在地图上设置该位置的动画即可。如果需要,还可以向地图添加自定义覆盖。下面的内容应该会有所帮助

double lat = location.getLatitude();
double longi = location.getLongitude();
long time = location.getTime();
GeoPoint currentGeo = new GeoPoint(toMicroDegrees(lat), toMicroDegrees(longi));
MapController controller = map.getController();
controller.animateTo(currentGeo);

实际上,您从未将信息传递给地图以显示位置

您需要做的是从显示的布局中获取地图视图

然后获取地图视图的控制器,并将用户位置设置为中心/动画到其位置

类似于此:

mapView1 = (MapView) this.findViewById(R.id.map);
MapController mapControl = mapView1.getController();
GeoPoint geo = new GeoPoint((int)(lat)*1e6), (int(long*1e6));
mapControl.animateTo(geo);

此链接应该会有所帮助

您永远不会通过向地图传递信息来显示位置

您需要做的是从显示的布局中获取地图视图

然后获取地图视图的控制器,并将用户位置设置为中心/动画到其位置

类似于此:

mapView1 = (MapView) this.findViewById(R.id.map);
MapController mapControl = mapView1.getController();
GeoPoint geo = new GeoPoint((int)(lat)*1e6), (int(long*1e6));
mapControl.animateTo(geo);

此链接应该有帮助

您想了解该位置的哪些信息?如果你想要地址、街道、州等,你必须使用反向地理编码。应该有一种方法可以使用谷歌地图来实现这一点。将纬度、经度转换为地理点并添加使用MapController在mapi上设置位置动画。我想使用pin向用户显示她的位置!我不需要纬度或经度,我只想向用户显示她的位置您想要关于该位置的什么?如果你想要地址、街道、州等,你必须使用反向地理编码。应该有一种方法可以使用谷歌地图来实现这一点。将纬度、经度转换为地理点并添加使用MapController在mapi上设置位置动画。我想使用pin向用户显示她的位置!我不需要纬度或经度,我只想向用户显示她的位置。在这行中给我一个错误GeoPoint geo=new GeoPoint intlat*1e6,intlong*1e6;对不起,是我的错,代码应该是:GeoPoint geo=new GeoPoint intlat*1e6,intlat*1e6;这是给我一个错误在这一行GeoPoint geo=新GeoPoint intlat*1e6,intlong*1e6;对不起,是我的错,代码应该是:GeoPoint geo=new GeoPoint intlat*1e6,intlat*1e6;不,我不想打开谷歌地图,我已经在使用谷歌API,那么我如何检索我的位置?不,我不想打开谷歌地图,我已经在使用谷歌API,那么我如何检索我的位置?因此,我替换onLocationChanged中的所有内容并放入您的代码,但地图是什么?你是说地图视图?对不起,是的,地图只是一个地图视图对象。所以,我替换了onLocationChanged中的所有内容,并放入你的代码,但地图是什么?你是说地图视图?对不起,是的,地图只是一个地图视图对象。