我正在Android谷歌地图v2中进行地图聚类。 我只想将标记从一个地理点动画到另一个地理点。有没有办法在Google maps v2中移动标记?在谷歌地图v2中移动标记android
回答
有一个移动标记在谷歌地图V2演示应用程序的例子..在播放库的示例中!
我已经看过了!这里用于移动标记代码: - >
public void animateMarker(final Marker marker, final LatLng toPosition,
final boolean hideMarker) {
final Handler handler = new Handler();
final long start = SystemClock.uptimeMillis();
Projection proj = mGoogleMapObject.getProjection();
Point startPoint = proj.toScreenLocation(marker.getPosition());
final LatLng startLatLng = proj.fromScreenLocation(startPoint);
final long duration = 500;
final Interpolator interpolator = new LinearInterpolator();
handler.post(new Runnable() {
@Override
public void run() {
long elapsed = SystemClock.uptimeMillis() - start;
float t = interpolator.getInterpolation((float) elapsed
/duration);
double lng = t * toPosition.longitude + (1 - t)
* startLatLng.longitude;
double lat = t * toPosition.latitude + (1 - t)
* startLatLng.latitude;
marker.setPosition(new LatLng(lat, lng));
if (t < 1.0) {
// Post again 16ms later.
handler.postDelayed(this, 16);
} else {
if (hideMarker) {
marker.setVisible(false);
} else {
marker.setVisible(true);
}
}
}
});
}
希望它能帮助每一个!
您好我有同样的问题,在这里我的帖子Google Maps Android api v2 and current location
您可以使用标记的remove()方法用新删除旧的标记。 我希望这是你需要的
请试试这个:
private Marker marker;
虽然上谷歌地图加入标记:
if(marker!=null){
marker.remove();
}
LatLng mLatLng = new LatLng(Your_Latitude, Your_Longitude);
marker = mMapHistory.addMarker(new MarkerOptions().position(mLatLng).title("My Title").snippet("My Snippet").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
private static void addMarkerWithCameraZooming(Context ctx, GoogleMap googleMap, double latitude, double longitude, String title, boolean dragabble) {
LatLng current_latlng = new LatLng(latitude, longitude);
googleMap.addMarker(new MarkerOptions().position(current_latlng)
.title(title)
.snippet(getLocality(current_latlng, ctx))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.person_marker))
.draggable(dragabble)
);
CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latitude, longitude)).zoom(12).tilt(30).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
mGoogleMap.setOnMarkerDragListener(new OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker markerDragStart) {
// TODO Auto-generated method stub
if (BuildConfig.DEBUG)
Log.i("Marker drag", "start");
}
@Override
public void onMarkerDragEnd(Marker markerDragEnd) {
if (BuildConfig.DEBUG)
Log.i("Marker drag", "start");
}
@Override
public void onMarkerDrag(Marker markerDrag) {
if (BuildConfig.DEBUG)
Log.i("Marker drag", "start");
}
});
我已经在这样做的话希望这个最简单的方法能帮助你。
与ValueAnimator这将只更新标记的位置,但不在地图上标记标记。 –
您可以使用:marker.setPosition(mLatLng); – n8yn8
有道:
double[] startValues = new double[]{marker.getPosition().latitude, marker.getPosition().longitude};
double[] endValues = new double[]{destLatLng.latitude, destLatLng.longitude};
ValueAnimator latLngAnimator = ValueAnimator.ofObject(new DoubleArrayEvaluator(), startValues, endValues);
latLngAnimator.setDuration(600);
latLngAnimator.setInterpolator(new DecelerateInterpolator());
latLngAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
double[] animatedValue = (double[]) animation.getAnimatedValue();
marker.setPosition(new LatLng(animatedValue[0], animatedValue[1]));
}
});
latLngAnimator.start();
DoubleArrayEvaluator
不android.animation
包存在,有我的执行:
import android.animation.TypeEvaluator;
/**
* Inspired from {@link android.animation.FloatArrayEvaluator}
* <p/>
* This evaluator can be used to perform type interpolation between <code>double[]</code> values.
* Each index into the array is treated as a separate value to interpolate. For example,
* evaluating <code>{100, 200}</code> and <code>{300, 400}</code> will interpolate the value at
* the first index between 100 and 300 and the value at the second index value between 200 and 400.
*/
public class DoubleArrayEvaluator implements TypeEvaluator<double[]> {
private double[] mArray;
/**
* Create a DoubleArrayEvaluator that does not reuse the animated value. Care must be taken
* when using this option because on every evaluation a new <code>double[]</code> will be
* allocated.
*
* @see #DoubleArrayEvaluator(double[])
*/
public DoubleArrayEvaluator() {
}
/**
* Create a DoubleArrayEvaluator that reuses <code>reuseArray</code> for every evaluate() call.
* Caution must be taken to ensure that the value returned from
* {@link android.animation.ValueAnimator#getAnimatedValue()} is not cached, modified, or
* used across threads. The value will be modified on each <code>evaluate()</code> call.
*
* @param reuseArray The array to modify and return from <code>evaluate</code>.
*/
public DoubleArrayEvaluator(double[] reuseArray) {
mArray = reuseArray;
}
/**
* Interpolates the value at each index by the fraction. If
* {@link #DoubleArrayEvaluator(double[])} was used to construct this object,
* <code>reuseArray</code> will be returned, otherwise a new <code>double[]</code>
* will be returned.
*
* @param fraction The fraction from the starting to the ending values
* @param startValue The start value.
* @param endValue The end value.
* @return A <code>double[]</code> where each element is an interpolation between
* the same index in startValue and endValue.
*/
@Override
public double[] evaluate(float fraction, double[] startValue, double[] endValue) {
double[] array = mArray;
if (array == null) {
array = new double[startValue.length];
}
for (int i = 0; i < array.length; i++) {
double start = startValue[i];
double end = endValue[i];
array[i] = start + (fraction * (end - start));
}
return array;
}
}
U挽救了我的一天兄弟。 – RameshJaga
- 1. Android谷歌地图v2中的标记
- 2. 谷歌地图动画标记移动
- 3. 谷歌地图API V2标记问题
- 4. 在Android谷歌地图v2中仅使标记点击一次
- 5. 标记在谷歌地图Android v2中不可见
- 6. 与谷歌地图的Android API v2的文本地图标记
- 7. 在谷歌地图中使用gps移动标记android
- 8. 移动标记谷歌地图API
- 9. 移动多个标记谷歌地图?
- 10. 标记移动谷歌地图
- 11. 谷歌地图Android API v2动画谷歌地图查看
- 12. Android谷歌地图(API V2)和标签
- 13. 谷歌地图API v2。 android
- 14. Android谷歌地图API v2
- 15. 谷歌地图Android版V2
- 16. 谷歌地图Android API v2
- 17. Android的谷歌地图V2
- 18. Android谷歌地图v2 maven
- 19. 谷歌地图V2 Android
- 20. Android谷歌地图v2
- 21. android谷歌地图标记
- 22. 变焦移动捏听众在谷歌地图V2在Android的
- 23. Android谷歌地图V2 - 在几个标记上的OnInfoWindowClick点击
- 24. 在谷歌地图v2上加载1700个标记Android超时
- 25. Android的谷歌地图动态标记
- 26. 如何在谷歌地图v2中添加标记标题?
- 27. 在角谷歌地图中使用鼠标移动标记
- 28. 删除标记谷歌地图API V2 - Android电子
- 29. 大可点击标记谷歌android地图api v2
- 30. Android的谷歌地图V2标记颜色
检查我的答案,我刚刚发布 –
这是文件ADT-包-linux/sdk/extras/google/google_play_services/samples/maps/src/com/example/mapdemo/MarkerDemoActivity.java如果有人感兴趣(在4.2.2示例中) –
是的..它在那里。 –