在mapview上精确定位当前的GPS位置

时间:2012-02-27 23:01:47

标签: android

我在这里和谷歌上尝试过很多教程,但似乎没有任何教程与我有关。

基本上,到目前为止,我已经能够在我的应用程序上显示mapview,并实现setBuiltInZoomControls。我只是不能让地图精确定位用户当前位置,如谷歌纬度。

我希望我的应用能够检测到我当前的位置,然后在按下按钮时找到它。 我会告诉大家到目前为止我用我的代码完成了什么,但在尝试了很多教程之后,我觉得我的代码现在太邋and且不完整而无法理解。

如果有任何我可能会监督的教程,请将链接发给我。如果没有,你能帮助我指导正确的方向吗?

谢谢你们,快乐的编码!

2 个答案:

答案 0 :(得分:2)

使用当前版本的Google Maps Android API v2,您可以使用以下代码显示当前位置:

showCurrentPosition(myMap);

下面是一个代码文件,其中包含可以添加到Activity类的辅助函数:

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;

import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;


private LatLng getCurrentPosition(){
    // location details
    locationManager     = (LocationManager) getSystemService(LOCATION_SERVICE);
    Criteria criteria   = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, false);

    Location location   = locationManager.getLastKnownLocation(bestProvider);
    LatLng posLatLon    = new LatLng(location.getLatitude(), location.getLongitude());
    Toast.makeText(this, "position: "+ location.getLatitude() + "," + location.getLongitude(), Toast.LENGTH_SHORT).show();
    return posLatLon;
}

private LatLng showCurrentPosition(GoogleMap map){
    LatLng posLatLon    = getCurrentPosition();
    CameraUpdate cam    = CameraUpdateFactory.newLatLngZoom(posLatLon, 12.0f);
    mMap.moveCamera(cam);
    return posLatLon;
}

答案 1 :(得分:0)

这将创建一个新的位置叠加层并使用默认地图标记确定位置:

private MyLocationOverlay mLocationOverlay = new MyLocationOverlay(getBaseContext(), mMapView);
mMapView.getController().animateTo(mLocationOverlay.getMyLocation());

要进一步放大,您可以通过执行mMapView.getController().setZoom(10);或使用.zoomIn().

等操作来设置静态缩放级别

有许多方法可以自定义缩放行为,如果您对其进行过多的自定义,最好使用Runnable。您可以在Runnable电话中添加额外的.animateTo参数。