我有一个完全正常工作的GoogleMap
,我可以通过调用
mMap.setMyLocationEnabled(true);
我想要完成的是实际点击按钮的功能,该按钮现在显示在GoogleMap
上(即通过缩放等方式将地图设置为用户位置的动画)。
该功能已经在GoogleMap对象中,我该如何使用它?
我不想使用LocationListener
等来完成此操作,我只想在单击地图上的按钮时“调用相同的代码”。可以这么简单吗?
提前致谢。
编辑:
我基本上想要做的是将地图置于用户位置,就像我点击按钮时GoogleMap在用户位置居中的方式。像这样:
GoogleMap mMap = this.getMap();
if(mMap != null) {
mMap.setMyLocationEnabled(true);
//TODO center the map on mylocation
}
编辑:
显然谷歌正在努力解决这个问题。 http://code.google.com/p/gmaps-api-issues/issues/detail?id=4644
答案 0 :(得分:4)
当我们获得第一个位置更新时,这就是我导航到地图中心的方式。
我的班级标题:
public class FragActivity extends SherlockFragmentActivity implements OnMyLocationChangeListener
private GoogleMap mMap;
我的mMap-setup:
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = customMapFragment.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null)
setUpMap();
}
setUpMap-方法:
private void setUpMap() {
mMap.setMyLocationEnabled(true);
mMap.setOnMyLocationChangeListener(this);
}
和我的onlocationchange:
@Override
public void onMyLocationChange(Location lastKnownLocation) {
CameraUpdate myLoc = CameraUpdateFactory.newCameraPosition(
new CameraPosition.Builder().target(new LatLng(lastKnownLocation.getLatitude(),
lastKnownLocation.getLongitude())).zoom(6).build());
mMap.moveCamera(myLoc);
mMap.setOnMyLocationChangeListener(null);
}
像魅力一样工作
答案 1 :(得分:2)
不确定为什么其他答案在谈论OnMyLocationChangeListener
。这不是OP中提出的问题。问的是如何复制点击MyLocationButton的确切行为,这实际上比仅仅将相机设置为用户位置更复杂。该按钮根据您当前所处的缩放级别执行不同的操作。
例如,当您缩小显示方式时,点击该按钮会在缩放您的位置时将您的位置设为的动画,而如果您已经处于某些缩放级别,点击按钮仅 将您动画到您的位置,同时维护当前缩放级别。
如果我们只是简单地获取对MyLocationButton的引用并且只是,你知道,点击它就不会煞费苦心地试图复制这种行为。嗯,这是我发现的当前最佳方式:
@OnClick(R.id.fabMyLocation)
public void onMyLocationClick(FloatingActionButton fabMyLocation) {
View myLocationButton = ((View) mapFragment.getView().findViewById(Integer.parseInt("1")).getParent())
.findViewById(Integer.parseInt("2"));
myLocationButton.performClick();
}
是的,它并不漂亮,并且依赖于可能在未来版本的Google Maps API中更改的硬编码ID。但是这种检索按钮的方法基于this highly rated answer from 2013,到目前为止,从Google Play Services 8.4.0开始,仍然可以正常运行。
答案 2 :(得分:1)
2013年2月更新:
现在可以了。您现在可以设置地图的OnMyLocationChangeListener。根据需要接收更新并相应地移动相机。
这是不可能的。我发现Android中的GoogleMap在其提供的信息方面非常有限。它根本不能让您直接访问用户位置更新或用户可以按下的按钮(您只能启用/禁用它,而不能模拟按下)。
您必须实现LocationSource和LocationListener接口,并使用LocationManager从设备获取更新并使用它们将它们发送到地图。
然后,您可以将自己的自定义按钮添加到叠加层以复制默认按钮,并使用您自己的相机和缩放控件来模拟功能。
来源:搜索时间