Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在android中的地图标记上实现插针动画_Android_Google Maps_Google Maps Markers_Android Animation - Fatal编程技术网

无法在android中的地图标记上实现插针动画

无法在android中的地图标记上实现插针动画,android,google-maps,google-maps-markers,android-animation,Android,Google Maps,Google Maps Markers,Android Animation,我正在尝试在地图标记上实现插针效应。我已经实现了下面的代码,但是我找不到标记上出现的动画。谁能一步一步地指导我怎么做 final LatLng latlang = new LatLng(15.4989, 73.8278); final MarkerOptions marker = new MarkerOptions().position(latlang).title("Hello Maps "); mGoogleMap.moveCamera(CameraUpdateFac

我正在尝试在地图标记上实现插针效应。我已经实现了下面的代码,但是我找不到标记上出现的动画。谁能一步一步地指导我怎么做

    final LatLng latlang = new LatLng(15.4989, 73.8278);
    final MarkerOptions marker = new MarkerOptions().position(latlang).title("Hello Maps ");
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlang, 17));
    mGoogleMap.addMarker(marker);
    final long start = SystemClock.uptimeMillis();
    Projection proj = mGoogleMap.getProjection();

    Point startPoint = proj.toScreenLocation(marker.getPosition());
    final LatLng startLatLng = proj.fromScreenLocation(startPoint);
    final Interpolator interpolator = new LinearInterpolator();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            long elapsed = SystemClock.uptimeMillis() - start;
            float t = interpolator.getInterpolation((float) elapsed / 1000);
            double lng = t * latlang.longitude + (1 - t) * startLatLng.longitude;
            double lat = t * latlang.latitude + (1 - t) * startLatLng.latitude;
            Log.i("marker thread","elapsed"+elapsed+",t"+t+"lng,"+lng+",lat"+lat);
            marker.position(new LatLng(lat, lng));



        }
    }, 1000);

您的代码中有3个问题

首先,你的处理程序从不回复自己,它只是在等待一秒钟。要修复它,您必须在处理程序中调用处理程序,如
handler.postDelayed(这是16)直到您的
t>=1
(1秒)

其次,您应该等待0.016秒,而不是等待外部处理程序调用整整1秒

最后,您的“marker”实际上是marker选项,因此您的代码应该如下所示:

    final MarkerOptions markerOptions = new MarkerOptions().position(latlang).title("Hello Maps ");
    final Marker marker = googleMap.addMarker(markerOptions);
而不是使用
marker.position
,而是使用
marker.setPosition(新LatLng(lat,lng))