diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index bbc77b4409..0890090d00 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -3,6 +3,7 @@ package com.mogo.map.impl.amap; import android.content.Context; import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.Point; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; @@ -495,7 +496,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, return null; } - @Override public MogoLatLng getTarget() { + @Override + public MogoLatLng getTarget() { try { return ObjectUtils.fromAMap( mMapView.getMap().getCameraPosition().target ); } catch ( Exception e ) { @@ -512,4 +514,16 @@ public class AMapNaviViewWrapper implements IMogoMapView, mMapView.setViewOptions( options ); } } + + @Override + public Point getLocationPointInScreen( MogoLatLng latLng ) { + if ( checkAMapView() ) { + try { + return mMapView.getMap().getProjection().toScreenLocation( ObjectUtils.fromMogo2( latLng ) ); + } catch ( Exception e ) { + return null; + } + } + return null; + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java index 61891b1f92..ac464d5de0 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java @@ -1,6 +1,7 @@ package com.mogo.map.impl.amap.marker; import android.graphics.Bitmap; +import android.graphics.Point; import android.view.View; import com.amap.api.maps.model.BitmapDescriptor; @@ -281,4 +282,11 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { public String getOwner() { return this.mOwner == null ? mMogoMarkerOptions.getOwner() : mOwner; } + + @Override + public void setPositionByPixels( Point position ) { + if ( mMarker != null ) { + mMarker.setPositionByPixels( position.x, position.y ); + } + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index 73813df119..99c9a7e88a 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -1,5 +1,7 @@ package com.mogo.map.impl.amap.uicontroller; +import android.graphics.Point; + import com.mogo.map.MogoLatLng; import com.mogo.map.MogoMap; import com.mogo.map.uicontroller.EnumMapUI; @@ -143,4 +145,12 @@ public class AMapUIController implements IMogoMapUIController { mClient.setPointToCenter( mapCenterX, mapCenterY ); } } + + @Override + public Point getLocationPointInScreen( MogoLatLng latLng ) { + if ( mClient != null ) { + return mClient.getLocationPointInScreen( latLng ); + } + return null; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java index 46efbd15ec..e9640ab43c 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java @@ -1,6 +1,7 @@ package com.mogo.map.marker; import android.graphics.Bitmap; +import android.graphics.Point; import com.mogo.map.MogoLatLng; @@ -214,4 +215,11 @@ public interface IMogoMarker { * @return */ String getOwner(); + + /** + * 设置marker在window的位置 + * + * @param position window 的位置。 + */ + void setPositionByPixels( Point position ); } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index e87b0a3682..9bedc384c0 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -1,5 +1,7 @@ package com.mogo.map.uicontroller; +import android.graphics.Point; + import com.mogo.map.MogoLatLng; /** @@ -102,4 +104,12 @@ public interface IMogoMapUIController { * @param mapCenterY y 点位置x值与地图高度的比例 */ void setPointToCenter( double mapCenterX, double mapCenterY ); + + /** + * 获取经纬度对应的屏幕的位置 + * + * @param latLng + * @return + */ + Point getLocationPointInScreen( MogoLatLng latLng ); } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index 5b54dbb5ca..744ed62532 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -1,5 +1,7 @@ package com.mogo.map; +import android.graphics.Point; + import com.mogo.map.impl.amap.uicontroller.AMapUIController; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; @@ -136,4 +138,12 @@ public class MogoMapUIController implements IMogoMapUIController { mDelegate.setPointToCenter(mapCenterX, mapCenterY); } } + + @Override + public Point getLocationPointInScreen( MogoLatLng latLng ) { + if (mDelegate != null) { + return mDelegate.getLocationPointInScreen(latLng); + } + return null; + } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 37ab97b7b6..d1eefcb5a3 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -1,5 +1,6 @@ package com.mogo.module.extensions.entrance; +import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; @@ -15,6 +16,8 @@ import com.mogo.map.MogoLatLng; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.location.MogoLocation; +import com.mogo.map.marker.IMogoMarkerManager; +import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.IMogoNaviListener; @@ -63,6 +66,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private IMogoLocationClient mMogoLocationClient; private IMogoNavi mMogoNavi; private IMogoFragmentManager mMogoFragmentManager; + private IMogoMarkerManager mMogoMarkerManager; private IMogoRegisterCenter mMogoRegisterCenter; @@ -80,7 +84,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override protected void initViews() { mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation(); - mCommonAddress = findViewById( R.id.module_entrance_id_common_address ); mSearch = findViewById( R.id.module_entrance_id_search ); @@ -97,6 +100,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCompany = findViewById( R.id.module_entrance_id_company ); mCompany.setOnClickListener( view -> { + mMogoMarkerManager.addMarker( "tag", new MogoMarkerOptions().owner( "tag" ) + .latitude( 39.000 ).longitude( 136.000 ).icon( BitmapFactory.decodeResource( getResources(), R.drawable.module_ext_ic_voice ) ).anchor( 0.5f, 0.5f ) ); } ); mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); @@ -146,6 +151,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mMogoRegisterCenter.registerMogoNaviListener( ExtensionsModuleConst.TYPE_ENTRANCE, this ); mMogoRegisterCenter.registerMogoMapListener( ExtensionsModuleConst.TYPE_ENTRANCE, this ); + + mMogoMarkerManager = mService.getMarkerManager( getContext() ); } diff --git a/modules/mogo-module-main/src/main/AndroidManifest.xml b/modules/mogo-module-main/src/main/AndroidManifest.xml index 7abf891f3c..a793893503 100644 --- a/modules/mogo-module-main/src/main/AndroidManifest.xml +++ b/modules/mogo-module-main/src/main/AndroidManifest.xml @@ -18,9 +18,9 @@ - - - + + +