This commit is contained in:
wangcongtao
2020-01-10 20:05:23 +08:00
parent 834a82f902
commit 8b4000ad4a
11 changed files with 104 additions and 21 deletions

View File

@@ -7,6 +7,7 @@ import android.graphics.Point;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
@@ -17,6 +18,8 @@ import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MyLocationStyle;
import com.amap.api.maps.model.Poi;
import com.amap.api.maps.model.Polyline;
import com.amap.api.maps.model.animation.Animation;
import com.amap.api.maps.model.animation.TranslateAnimation;
import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.AMapNaviViewListener;
import com.amap.api.navi.AMapNaviViewOptions;
@@ -24,13 +27,16 @@ import com.amap.api.navi.model.NaviInfo;
import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoLatLng;
import com.mogo.map.impl.amap.marker.AMapMarkerWrapper;
import com.mogo.map.impl.amap.message.AMapMessageListener;
import com.mogo.map.impl.amap.message.AMapMessageManager;
import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
/**
@@ -526,4 +532,29 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
return null;
}
@Override
public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator, long duration ) {
if ( marker == null || high <= 0.0f || interpolator == null || duration < 0 ) {
return;
}
try {
final LatLng latLng = ObjectUtils.fromMogo2( marker.getPosition() );
Point point = mMapView.getMap().getProjection().toScreenLocation( latLng );
point.y -= WindowUtils.dip2px( getContext(), high );
LatLng target = mMapView.getMap().getProjection().fromScreenLocation( point );
//使用TranslateAnimation,填写一个需要移动的目标点
Animation animation = new TranslateAnimation( target );
animation.setInterpolator( interpolator );
//整个移动所需要的时间
animation.setDuration( duration );
//设置动画
if ( marker instanceof AMapMarkerWrapper ) {
( ( AMapMarkerWrapper ) marker ).getMarker().setAnimation( animation );
( ( AMapMarkerWrapper ) marker ).getMarker().startAnimation();
}
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}

View File

@@ -289,4 +289,8 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
mMarker.setPositionByPixels( position.x, position.y );
}
}
public Marker getMarker() {
return mMarker;
}
}

View File

@@ -1,9 +1,11 @@
package com.mogo.map.impl.amap.uicontroller;
import android.graphics.Point;
import android.view.animation.Interpolator;
import com.mogo.map.MogoLatLng;
import com.mogo.map.MogoMap;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.utils.logger.Logger;
@@ -134,7 +136,7 @@ public class AMapUIController implements IMogoMapUIController {
@Override public MogoLatLng getWindowCenterLocation() {
if ( mClient != null ) {
return mClient.getCameraSouthWestPosition();
return mClient.getWindowCenterLocation();
}
return null;
}
@@ -153,4 +155,11 @@ public class AMapUIController implements IMogoMapUIController {
}
return null;
}
@Override
public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator, long duration ) {
if ( mClient != null ) {
mClient.startJumpAnimation( marker, high, interpolator, duration );
}
}
}