熟悉Google Maps API(v2)并将其集成到我的Android应用程序中,我有两个问题,我没有找到最好的方法:
第一个始终关注当前用户位置(如GPS应用程序)。我做的是在onCreate我获得用户位置(根据我在这里和那里找到的一些东西))
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(bestProvider);
LatLng currentUserPosition = new LatLng(location.getLatitude(), location.getLongitude());
// setting the cam position to current position
CameraPosition camPosition = new CameraPosition(currentUserPosition, 17f, 30f, 0f);
CameraUpdate update = CameraUpdateFactory.newCameraPosition(camPosition);
mapFragment.getMap().animateCamera(update);
// updating map every second
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, // 1-second interval.
10, // 10 meters.
listener);
}
其中listener
是LocationListener
配置如下:
private final LocationListener listener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
CameraPosition camPosition = new CameraPosition(new LatLng(location.getLatitude(), location.getLongitude()), 17f, 30f, 0f);
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
CameraUpdate update = CameraUpdateFactory.newCameraPosition(camPosition);
mapFragment.getMap().animateCamera(update);
}
};
这是正确的方法吗?
第二件事是用户可以触摸地图并在地图上动态添加标记(使用自己的标题和内容)。我试图找到(但没有)一种在标记之间绘制路径的方法,并像gps应用程序一样工作。这有可能吗?
谢谢
答案 0 :(得分:1)
我强烈建议您遵循documentation中的开发者指南教程,了解将Google地图Android API v2集成到您的应用中的正确方法,并检查与Google Play服务SDK捆绑在一起的sample code。< / p>
自动关注用户(我的位置点)位置的最佳(也是最简单)方法是实施OnMyLocationChangeListener
并在该界面提供的回调中相应地更新相机。
要创建连接标记的一系列线段,您应该能够使用Polyline
类。 修改:您可能会发现此相关answer对于在两个标记之间绘制路径非常有用。
答案 1 :(得分:0)
实际上Google Map API V2
你可以使用:
map.setMyLocationEnabled(true);
这将在Google地图窗口中创建一个图标,以跟踪用户当前位置。
实际上我认为实现整个LocationListener
更容易。
关于标记问题,您需要实现某种窗口,用户可以在其中设置所有标记数据。然后你可以像这样动态添加标记:
marker = map.addMarker(new MarkerOptions().position(latlng).title(markersTitleArray[i]).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));
如果您想在点击地图时添加此标记,则需要实现:
map.setOnMapClickListener(this);
map.setOnMapLongClickListener(this);
在Activity
。
最后关于您的上一个问题,因为您已经获得了关于如何在地图上绘制Polyline
方向的答案:
Draw driving route between 2 GeoPoints on GoogleMap SupportMapFragment