获取用户当前位置并在Google地图中确定

时间:2012-03-06 00:08:13

标签: java android google-maps

我想问你:我在我的应用程序中使用谷歌地图,当我打开具有地图的活动时,我想要确定用户当前位置,我使用此代码来检索当前用户位置

         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 */

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

3 个答案:

答案 0 :(得分:3)

如果我正确理解了您的问题,您希望获取用户当前位置并将其显示在地图上。您拥有纬度和经度值,您需要做的就是构建一个GeoPoint并在地图上设置该位置的动画。如果需要,您还可以向地图添加自定义叠加层。以下内容应该有所帮助。

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);

答案 1 :(得分:2)

您可以使用geo 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类的文档 - http://developer.android.com/reference/android/location/Geocoder.html

答案 2 :(得分:2)

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

您需要做的是从您显示的布局中获取MapView。

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

类似的东西:

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

此链接应有助于http://mobiforge.com/developing/story/using-google-maps-android