如何在mapview中为标记(叠加)图像设置动画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在mapview中为标记(叠加)图像设置动画相关的知识,希望对你有一定的参考价值。

我正在开发一个使用谷歌地图的android应用程序。我想在MapView中显示带有一些坐标的叠加图像。我需要为图像设置动画。请帮忙。我的代码如下

    mapView = (MapView) findViewById(R.id.myGMap);
    mapView.setBuiltInZoomControls(true);
    mapController = mapView.getController();
    mapView.buildDrawingCache();
    mapView.setAnimationCacheEnabled(true);
    mapView.setClickable(true);
    mapView.getZoomLevel();
    mapView.displayZoomControls(true);
    mapView.getMapCenter(); 

    List<Overlay> mapOverlays = mapView.getOverlays();

    drawable = getResources().getDrawable(R.drawable.img1);
    HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable);

    int latitudeE6 = (int)((12.907382) * 1000000);
    int longitudeE6 = (int)((77.595105) * 1000000);
    point = new GeoPoint(latitudeE6,longitudeE6);       
    overlayitem = new OverlayItem(point, "", "");
    mapController.animateTo(point);     
    itemizedoverlay.addOverlay(overlayitem);
    itemizedoverlay.getCenter();
    itemizedoverlay.getFocus();

    mapOverlays.add(itemizedoverlay);
答案
public static void addAnimationToMap(MapView map, int animationResourceId, GeoPoint geoPoint)

{   
 final ImageView view = new ImageView(map.getContext());

    view.setImageResource(animationResourceId);

    //Post to start animation because it doesn't start if start() method is called in activity OnCreate method.
    view.post(new Runnable() {
        @Override
        public void run() {
            AnimationDrawable animationDrawable = (AnimationDrawable) view.getDrawable();
            animationDrawable.start();
        }
    });

    map.addView(view);

    MapView.LayoutParams layoutParams = new MapView.LayoutParams(
        MapView.LayoutParams.WRAP_CONTENT,
        MapView.LayoutParams.WRAP_CONTENT,
        geoPoint,
        MapView.LayoutParams.BOTTOM_CENTER);
    view.setLayoutParams(layoutParams);
}

您可以在res-> drawable中添加动画列表,并将drawable传递给此函数。 AFAIK是在谷歌地图上添加动画标记的唯一可能方法是在地图上方添加一个视图

另一答案

我相信这很难做,但您可以使用drawable中的alpha功能创建alpha动画,如下所示:

drawable.setAlpha();

以上是关于如何在mapview中为标记(叠加)图像设置动画的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何在 google_maps_flutter 中为标记图标设置动画?

在 osmdroid 中将叠加添加到 MapView

在 Swift 中为 mapView 上的每个注释显示不同的图像

如何在 iOS7 SpriteKit 中为不同大小的图像设置动画?

如何在 tableview 中为图像设置动画以同时扩展和打开另一个视图控制器?

如何在 Apple WatchKit 中为循环进度设置动画?