如何实现像超级一样的可拖动地图?我正在使用谷歌地图v2.实际上我得到了解决这篇文章的解决方案 并在这里分享我的完整解决方案
在谷歌地图中,我希望能够在我放大或缩小时将地图的中心保留在我所在位置的标记上.这是Ingress所做的事情,无论你双击(或双击)或捏合的地方,地图都会在你的标记上居中.所以有可能......
我现在想出的最好的是:
google.maps.event.addListener(mymap, 'zoom_changed', function() {
mymap.setCenter({lat: myLoc.lat, lng: myLoc.lon});
})
Run Code Online (Sandbox Code Playgroud)
但它远非完美,它只是在用户已经缩放后重新定位地图...
非常感谢 !
[编辑]绝对没有任何帮助API参考...或其他地方我是盲目的,错过了它!
我在搜索谷歌地图中心时使用双击和捏缩放进行缩放.我在这里找到了一个解决方案,这仅适用于双击缩放解决方案.
TouchableWrapper
public class TouchableWrapper extends FrameLayout {
GestureDetectorCompat mGestureDetector;
public TouchableWrapper(Context context) {
super(context);
mGestureDetector = new GestureDetectorCompat(context, mGestureListener);
}
private final GestureDetector.SimpleOnGestureListener mGestureListener
= new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.e("GestureDetector", "Executed");
//Notify the event bus (I am using Otto eventbus of course) that you have just received a double-tap event on the map, inside the event bus event listener
EventBus_Singleton.getInstance().post(new EventBus_Poster("double_tapped_map"));
return true;
}
};
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev); …Run Code Online (Sandbox Code Playgroud) 我想在用户缩放时禁用Android googlemaps上的滚动功能.在IOS谷歌地图中,它的那种简单,只需设置一个参数:self.settings.allowScrollGesturesDuringRotateOrZoom = NO; 不幸的是,我还没有在Android中找到这种功能,我正在寻找解决方案.我现在最好的想法是扩展googlemaps视图,截取视图上的触摸,如果触摸动作是捏,则手动设置缩放.现在,这在我看来相当骇人和不可靠.有一个更好的方法吗?还有其他建议或想法吗?我还没有关于那个的任何代码,所以不能在这里包含任何代码.
对于某些情况,为什么需要这样做,是中心有一个用于标记地图精确中心的引脚,中心LatLng用于地址编码.
我的布局
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/pin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@null"
android:src="@drawable/ic_center_pin" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
下面的东西我试过 android如何在标记下移动地图
我试过onCameraChangeListener方法,下面是代码,但实验是滞后的,
private GoogleMap.OnCameraChangeListener cameraChangedListener = new GoogleMap.OnCameraChangeListener() {
private float previousZoomValue = 17;
private CameraUpdate cu;
@Override
public void onCameraChange(CameraPosition cameraPosition) {
if (previousZoomValue == cameraPosition.zoom) {
mLatitude = cameraPosition.target.latitude;
mLongitude = cameraPosition.target.longitude;
cu = CameraUpdateFactory.newLatLng(new LatLng(mLatitude,mLongitude));
} else if (previousZoomValue > cameraPosition.zoom) {
previousZoomValue = cameraPosition.zoom;
mGoogleMap.moveCamera(cu);
} else {
mGoogleMap.moveCamera(cu);
previousZoomValue = cameraPosition.zoom;
}
} …Run Code Online (Sandbox Code Playgroud)