Android 标记动画创建重复项

Android 标记动画创建重复项,android,animation,google-maps-markers,Android,Animation,Google Maps Markers,我开发了一个位置感知应用程序,并使用自定义标记作为我的位置('blue-dot'),但每当标记移动到一个新位置时,它就会在地图上的旧位置留下一个重复标记 代码如下: 标记 myMarker = mMap.addMarker(new MarkerOptions() .flat(true) .position(new LatLng(0, 0)) .anchor(0.5f, 0.5f)

我开发了一个位置感知应用程序,并使用自定义标记作为我的位置(
'blue-dot'
),但每当标记移动到一个新位置时,它就会在地图上的旧位置留下一个重复标记

代码如下:

标记

myMarker = mMap.addMarker(new MarkerOptions()
                .flat(true)
                .position(new LatLng(0, 0))
                .anchor(0.5f, 0.5f)
                .visible(true)
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.position)));
召唤

方法

static void animateMarker(final Marker marker, final LatLng finalPosition) {
            TypeEvaluator<LatLng> typeEvaluator = new TypeEvaluator<LatLng>() {
                @Override
                public LatLng evaluate(float fraction, LatLng startValue, LatLng endValue) {
                    double lat = (finalPosition.latitude - marker.getPosition().latitude) * fraction + marker.getPosition().latitude;
                    double lng = (finalPosition.longitude - marker.getPosition().longitude) * fraction + marker.getPosition().longitude;
                    return new LatLng(lat, lng);
                }
            };
            Property<Marker, LatLng> property = Property.of(Marker.class, LatLng.class, "position");
            ObjectAnimator animator = ObjectAnimator.ofObject(marker, property, typeEvaluator, finalPosition);
            animator.setDuration(3000);
            animator.start();
        }
static void animateMarker(最终标记、最终板条最终位置){
TypeEvaluator TypeEvaluator=新的TypeEvaluator(){
@凌驾
公共LatLng评估(浮动分数、LatLng起始值、LatLng结束值){
双纬度=(finalPosition.latitude-marker.getPosition().latitude)*分数+marker.getPosition().latitude;
double lng=(finalPosition.longitude-marker.getPosition().longitude)*分数+marker.getPosition().longitude;
返回新的LatLng(lat,lng);
}
};
属性=属性(Marker.class,LatLng.class,“位置”);
ObjectAnimator animator=ObjectAnimator.of对象(标记、属性、类型计算器、最终位置);
设置持续时间(3000);
animator.start();
}
正如你可能注意到的那样,animateMarker方法来自GoogleDevBytes视频,所以我想这不应该是问题所在

我做错什么了吗?这是谷歌Api中的一个bug吗

检查以下要点: 尝试以这种方式实现它

更改如下:

if (calcDistance(mCurrentLocation, reference) > 0.1) //prevent wobbly marker
{
   animateMarker(myMarker, mCurrentLocation);
}
为此:

if (calcDistance(mCurrentLocation, reference) > 0.1) //prevent wobbly marker
{
   if (myMarker != null) {
       myMarker.remove(); 
   }
   animateMarker(myMarker, mCurrentLocation);
}
if (calcDistance(mCurrentLocation, reference) > 0.1) //prevent wobbly marker
{
   if (myMarker != null) {
       myMarker.remove(); 
   }
   animateMarker(myMarker, mCurrentLocation);
}