如何实现像超级一样的可拖动地图?我正在使用谷歌地图v2.实际上我得到了解决这篇文章的解决方案 并在这里分享我的完整解决方案
今天,回顾我的旧代码,我发现OnCameraChangeListener()现已弃用.
我发现很难理解如何修复我的这段代码:
mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
// Cleaning all the markers.
if (mGoogleMap != null) {
mGoogleMap.clear();
}
mPosition = cameraPosition.target;
mZoom = cameraPosition.zoom;
if (mTimerIsRunning) {
mDragTimer.cancel();
}
mDragTimer.start();
mTimerIsRunning = true;
}
});
Run Code Online (Sandbox Code Playgroud)
新的侦听器(又名OnCameraMoveListener())方法onCameraMove()没有CameraPosition cameraPosition输入变量,所以我很丢失:有没有办法回收我的旧代码?
这里有一些参考.
我在Android谷歌地图v2中进行地图聚类.我只想将标记从一个地理点动画到另一个地理点.有没有办法在谷歌地图v2中移动标记?
我a,目前在MapActivity中获取设备的当前位置(lat,lng).现在我想让用户移动地图,同时将标记保持在中心位置.这意味着无论何时移动地图,都将更新当前位置.(对?)
我按照这个android如何在标记下移动地图以及如何在地图上附加像Uber和Lyft这样的灵活标记?但无法明确我的观念.
Activity_map.xml(这里我添加了ImageView)
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/gps"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的MapActivity如下
public class MapActivity extends FragmentActivity implements OnMapReadyCallback,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener,GoogleMap.OnInfoWindowClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
// int x =_st.jsonArray.length();
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkLocationPermission();
}
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
fragmentOnMap = (FragmentOnMap)getFragmentManager().findFragmentById(R.id.fragment_bottom);
getFragmentManager().beginTransaction().hide(fragmentOnMap); …
Run Code Online (Sandbox Code Playgroud) 如何在Uber和Lyft等地图上附上灵活的标记?我正在使用谷歌地图v2.
基本上,我想在地图上显示标记,同时在移动地图时更改标记的位置.
编辑:
好的,我解决了我的问题.
第一步:将imageview添加到相同的布局和位置等于center.第二:获取地图中心的坐标使用以下方法
1-在我的情况下获取viewgroup(FrameLayout)地图片段所在的位置.
FrameLayout myContainer = (FrameLayout) findViewById(R.id.content_frame);
int mapHeight = myContainer.getHeight();
int mapWidth = myContainer.getWidth();
Run Code Online (Sandbox Code Playgroud)
2-使用setOnCameraChangeListener并在相机上更改获取坐标:
LatLng center = mMap.getCameraPosition().target;
Run Code Online (Sandbox Code Playgroud) android google-maps google-maps-markers google-maps-api-2 android-maps-v2
我的布局
<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)