我在这里和谷歌上尝试过很多教程,但似乎没有任何教程与我有关。
基本上,到目前为止,我已经能够在我的应用程序上显示mapview,并实现setBuiltInZoomControls。我只是不能让地图精确定位用户当前位置,如谷歌纬度。
我希望我的应用能够检测到我当前的位置,然后在按下按钮时找到它。 我会告诉大家到目前为止我用我的代码完成了什么,但在尝试了很多教程之后,我觉得我的代码现在太邋and且不完整而无法理解。
如果有任何我可能会监督的教程,请将链接发给我。如果没有,你能帮助我指导正确的方向吗?
谢谢你们,快乐的编码!
答案 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
参数。