设置家和公司

This commit is contained in:
zhangyuanzhen
2020-01-10 15:32:01 +08:00
parent 22e5be8e15
commit 8c5d08f320
15 changed files with 180 additions and 158 deletions

View File

@@ -489,6 +489,15 @@ public class AMapNaviViewWrapper implements IMogoMapView,
return null;
}
@Override public MogoLatLng getTarget() {
try {
return ObjectUtils.fromAMap( mMapView.getMap().getCameraPosition().target );
} catch ( Exception e ) {
}
return null;
}
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( checkAMapView() ) {

View File

@@ -130,6 +130,13 @@ public class AMapUIController implements IMogoMapUIController {
return null;
}
@Override public MogoLatLng getTarget() {
if ( mClient != null ) {
return mClient.getCameraSouthWestPosition();
}
return null;
}
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( mClient != null ) {

View File

@@ -94,4 +94,5 @@ public interface IMogoNavi {
* 清除规划的路线
*/
void clearCalculatePaths();
}

View File

@@ -88,6 +88,13 @@ public interface IMogoMapUIController {
*/
MogoLatLng getCameraSouthWestPosition();
/**
* 获取视图中心点坐标
*
* @return
*/
MogoLatLng getTarget();
/**
* 设置地图中心点
*

View File

@@ -21,9 +21,9 @@ public class MogoMapUIController implements IMogoMapUIController {
}
public static MogoMapUIController getInstance() {
if ( sInstance == null ) {
synchronized ( MogoMapUIController.class ) {
if ( sInstance == null ) {
if (sInstance == null) {
synchronized (MogoMapUIController.class) {
if (sInstance == null) {
sInstance = new MogoMapUIController();
}
}
@@ -36,64 +36,64 @@ public class MogoMapUIController implements IMogoMapUIController {
}
@Override
public void setTrafficEnabled( boolean visible ) {
if ( mDelegate != null ) {
mDelegate.setTrafficEnabled( visible );
public void setTrafficEnabled(boolean visible) {
if (mDelegate != null) {
mDelegate.setTrafficEnabled(visible);
}
}
@Override
public void changeZoom( boolean zoom ) {
if ( mDelegate != null ) {
mDelegate.changeZoom( zoom );
public void changeZoom(boolean zoom) {
if (mDelegate != null) {
mDelegate.changeZoom(zoom);
}
}
@Override
public void changeZoom( float zoom ) {
if ( mDelegate != null ) {
mDelegate.changeZoom( zoom );
public void changeZoom(float zoom) {
if (mDelegate != null) {
mDelegate.changeZoom(zoom);
}
}
@Override
public void changeMapMode( EnumMapUI mode ) {
if ( mDelegate != null ) {
mDelegate.changeMapMode( mode );
public void changeMapMode(EnumMapUI mode) {
if (mDelegate != null) {
mDelegate.changeMapMode(mode);
}
}
@Override
public void moveToCenter( MogoLatLng latLng ) {
if ( mDelegate != null ) {
mDelegate.moveToCenter( latLng );
public void moveToCenter(MogoLatLng latLng) {
if (mDelegate != null) {
mDelegate.moveToCenter(latLng);
}
}
@Override
public void showMyLocation( boolean visible ) {
if ( mDelegate != null ) {
mDelegate.showMyLocation( visible );
public void showMyLocation(boolean visible) {
if (mDelegate != null) {
mDelegate.showMyLocation(visible);
}
}
@Override
public void recoverLockMode() {
if ( mDelegate != null ) {
if (mDelegate != null) {
mDelegate.recoverLockMode();
}
}
@Override
public void displayOverview() {
if ( mDelegate != null ) {
if (mDelegate != null) {
mDelegate.displayOverview();
}
}
@Override
public float getScalePerPixel() {
if ( mDelegate != null ) {
if (mDelegate != null) {
return mDelegate.getScalePerPixel();
}
return 0;
@@ -101,7 +101,7 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public float getZoomLevel() {
if ( mDelegate != null ) {
if (mDelegate != null) {
return mDelegate.getZoomLevel();
}
return 0;
@@ -109,7 +109,7 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public MogoLatLng getCameraNorthEastPosition() {
if ( mDelegate != null ) {
if (mDelegate != null) {
return mDelegate.getCameraNorthEastPosition();
}
return null;
@@ -117,16 +117,23 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public MogoLatLng getCameraSouthWestPosition() {
if ( mDelegate != null ) {
if (mDelegate != null) {
return mDelegate.getCameraSouthWestPosition();
}
return null;
}
@Override public MogoLatLng getTarget() {
if (mDelegate != null) {
return mDelegate.getTarget();
}
return null;
}
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( mDelegate != null ) {
mDelegate.setPointToCenter( mapCenterX, mapCenterY );
public void setPointToCenter(double mapCenterX, double mapCenterY) {
if (mDelegate != null) {
mDelegate.setPointToCenter(mapCenterX, mapCenterY);
}
}
}

View File

@@ -18,9 +18,9 @@
<action android:name="android.intent.action.MAIN" />
<!--调试用暂时开启LAUNCHER这个属性-->
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER_APP" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<!-- <category android:name="android.intent.category.LAUNCHER_APP" />-->
<!-- <category android:name="android.intent.category.HOME" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
</intent-filter>
</activity>
</application>

View File

@@ -1,21 +1,29 @@
package com.mogo.module.navi.constants
import android.annotation.SuppressLint
import android.app.StatusBarManager
import android.content.Context
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.map.marker.IMogoMarkerManager
import com.mogo.map.navi.IMogoNavi
import com.mogo.map.uicontroller.IMogoMapUIController
import com.mogo.service.MogoServicePaths
import com.mogo.service.fragmentmanager.FragmentDescriptor
import com.mogo.service.fragmentmanager.IMogoFragmentManager
import com.mogo.service.map.IMogoMapService
import com.mogo.service.module.IMogoRegisterCenter
import com.mogo.service.statusmanager.IMogoStatusManager
import kotlin.isInitialized as isInitialized1
/**
*@author zyz
* 2020-01-08.
*/
@SuppressLint("StaticFieldLeak")
object SearchServiceHolder {
// 单例对象要使用Application Context
private lateinit var context: Context
val fragmentManager:IMogoFragmentManager = ARouter.getInstance().build(
MogoServicePaths.PATH_FRAGMENT_MANAGER
).navigation() as IMogoFragmentManager
@@ -25,8 +33,16 @@ object SearchServiceHolder {
val listenerCenter:IMogoRegisterCenter = ARouter.getInstance().build(
MogoServicePaths.PATH_REGISTER_CENTER
).navigation() as IMogoRegisterCenter
val statusManager:IMogoStatusManager = ARouter.getInstance().build(
MogoServicePaths.PATH_STATUS_MANAGER
).navigation() as IMogoStatusManager
fun init(context: Context){
this.context=context
}
fun push(
fragment: Fragment,
tag: String
@@ -39,8 +55,18 @@ object SearchServiceHolder {
}
fun getNavi(context: Context):IMogoNavi{
fun getNavi():IMogoNavi{
return mapService.getNavi(context)
}
fun getMapUIController(): IMogoMapUIController {
return mapService.mapUIController
}
fun getMarkerManger():IMogoMarkerManager{
return mapService.getMarkerManager(context)
}
}

View File

@@ -10,6 +10,8 @@ import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.utils.NetworkUtils;
/**
@@ -70,4 +72,13 @@ public abstract class BaseFragment extends Fragment {
Toast.makeText( mContext, msg, Toast.LENGTH_LONG ).show();
}
}
protected void setMarkerStatus(boolean show){
SearchServiceHolder.INSTANCE.getStatusManager().setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show
);
}
}

View File

@@ -11,8 +11,8 @@ import com.mogo.module.navi.bean.SearchPoi
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.ui.adapter.SearchCategoryAdapter
import kotlinx.android.synthetic.main.fragment_search_category.cv_search_result
import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result
import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
import kotlinx.android.synthetic.main.fragment_setting_address.rv_search_result
import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
@@ -28,6 +28,9 @@ class CategorySearchFragment : BaseSearchFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
category=arguments?.getString("category")
SearchServiceHolder.statusManager.setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, false
)
}
override fun getLayoutId(): Int {
return R.layout.fragment_search_category
@@ -83,6 +86,13 @@ class CategorySearchFragment : BaseSearchFragment() {
}
override fun onDestroy() {
super.onDestroy()
SearchServiceHolder.statusManager.setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, false
)
}
companion object{
fun newInstance( category:String):Fragment{
var bundle = Bundle()

View File

@@ -40,12 +40,12 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
}
override fun onCalculateSuccess() {
var calculatedStrategies = SearchServiceHolder.getNavi(activity!!)
var calculatedStrategies = SearchServiceHolder.getNavi()
.calculatedStrategies
if (calculatedStrategies != null&&calculatedStrategies.size>0) {
if (calculatedStrategies != null && calculatedStrategies.size > 0) {
mAdapter.setDatas(calculatedStrategies)
mAdapter.selectTag=calculatedStrategies[0].tagId
mAdapter.selectTag = calculatedStrategies[0].tagId
}
}
@@ -61,6 +61,9 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mogoTip = arguments?.getParcelable<MogoTip>(AMapConstants.KEY_PARCELABLE)
SearchServiceHolder.statusManager.setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, true
)
}
override fun onViewCreated(
@@ -70,14 +73,15 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
super.onViewCreated(view, savedInstanceState)
iv_navi_back.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
SearchServiceHolder.getNavi(context!!).clearCalculatePaths()
SearchServiceHolder.getNavi()
.clearCalculatePaths()
}
tv_navi_navi.text = getString(R.string.start_navi)
et_navi_search.setText(getString(R.string.choose_path))
et_navi_search.isEnabled = false
SearchServiceHolder.getNavi(context!!)
SearchServiceHolder.getNavi()
.naviTo(mogoTip?.point)
SearchServiceHolder.listenerCenter.registerMogoNaviListener(
@@ -91,12 +95,11 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
rv_search_result.adapter = mAdapter
tv_navi_navi.setOnClickListener {
SearchServiceHolder.fragmentManager.clearAll()
SearchServiceHolder.getNavi(activity!!)
SearchServiceHolder.getNavi()
.startNavi(false)
}
SearchServiceHolder.getNavi(context!!)
SearchServiceHolder.getNavi()
.setLineClickInteraction {
mAdapter.setSelectTag(it)
}
@@ -104,11 +107,21 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
mAdapter.setOnClickListener {
var item = it.getTag(R.id.tag_item) as MogoCalculatePath
mAdapter.setSelectTag(item.tagId)
SearchServiceHolder.getNavi(context!!)
SearchServiceHolder.getNavi()
.itemClickInteraction.onItemClicked(item.tagId)
}
}
override fun onDestroy() {
super.onDestroy()
SearchServiceHolder.listenerCenter.unregisterMogoNaviListener(
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT
)
SearchServiceHolder.statusManager.setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false
)
}
companion object {
fun newInstance(searchPoi: MogoTip): Fragment {
var bundle = Bundle()

View File

@@ -81,6 +81,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SearchServiceHolder.INSTANCE.init(getActivity().getApplicationContext());
}
@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

View File

@@ -1,52 +1,46 @@
package com.mogo.module.navi.ui.setting
import android.graphics.BitmapFactory
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.map.search.inputtips.MogoTip
import com.mogo.map.marker.MogoMarkerOptions
import com.mogo.module.common.MogoModulePaths
import com.mogo.module.navi.R
import com.mogo.module.navi.bean.SearchPoi
import com.mogo.module.navi.constants.AMapConstants
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.ui.adapter.SearchPoiAdapter
import com.mogo.module.navi.ui.base.BaseFragment
import com.mogo.module.navi.ui.search.BaseSearchFragment
import kotlinx.android.synthetic.main.fragment_navi_setting.iv_back
import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
import kotlinx.android.synthetic.main.fragment_setting_address.group_set_address
import kotlinx.android.synthetic.main.fragment_setting_address.rv_search_result
import kotlinx.android.synthetic.main.fragment_setting_address.tv_navi_choose_point
import kotlinx.android.synthetic.main.fragment_setting_address.tv_navi_my_location
import kotlinx.android.synthetic.main.fragment_setting_address.tv_set_as_home
import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
/**
* @author zyz
* 2020-01-07.
*/
@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING_HOME)
class SettingAddressFragment : BaseSearchFragment() {
override fun renderSearchPoiResult(
datums: MutableList<MogoTip>?,
showDelete: Boolean
) {
mAdapter.setDatas(datums)
group_set_address.visibility = View.GONE
rv_search_result.visibility = View.VISIBLE
}
override fun showHistory(datums: MutableList<SearchPoi>?) {
}
class SettingAddressFragment : BaseFragment() {
// override fun renderSearchPoiResult(
// datums: MutableList<MogoTip>?,
// showDelete: Boolean
// ) {
// mAdapter.setDatas(datums)
// group_set_address.visibility = View.GONE
// rv_search_result.visibility = View.VISIBLE
//
// }
//
// override fun showHistory(datums: MutableList<SearchPoi>?) {
// }
private val TAG:String="SettingAddressFragment"
private var style: Int = 0
private lateinit var mAdapter: SearchPoiAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: 0
setMarkerStatus(true)
SearchServiceHolder.getMapUIController().showMyLocation(false)
}
override fun getLayoutId(): Int {
@@ -61,9 +55,7 @@ class SettingAddressFragment : BaseSearchFragment() {
return style == 1
}
fun isSearch(): Boolean {
return group_set_address.visibility == View.GONE
}
override fun onViewCreated(
view: View,
@@ -78,46 +70,38 @@ class SettingAddressFragment : BaseSearchFragment() {
tv_set_as_home.text = resources.getString(R.string.set_as_compony_navi)
}
mAdapter = SearchPoiAdapter(activity, ArrayList())
rv_search_result.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
rv_search_result.adapter = mAdapter
iv_navi_back.setOnClickListener {
if (group_set_address.visibility == View.VISIBLE) {
SearchServiceHolder.fragmentManager.pop()
} else {
reset()
}
SearchServiceHolder.fragmentManager.pop()
}
var target = SearchServiceHolder.getMapUIController()
.target
var decodeResource = BitmapFactory.decodeResource(resources, R.mipmap.icon_choose_position)
val options = MogoMarkerOptions()
.icon(decodeResource)
.latitude(target.lat.toDouble())
.owner(TAG)
.longitude(target.lng.toDouble())
var addMarker = SearchServiceHolder.getMarkerManger()
.addMarker(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, options)
tv_navi_choose_point.setOnClickListener {
group_set_address.visibility = View.GONE
tv_set_as_home.visibility = View.VISIBLE
}
tv_navi_my_location.setOnClickListener {
group_set_address.visibility = View.GONE
tv_set_as_home.visibility = View.VISIBLE
}
}
private fun reset() {
group_set_address.visibility = View.VISIBLE
rv_search_result.visibility = View.GONE
mAdapter.clear()
et_navi_search.setText("")
tv_set_as_home.visibility = View.GONE
override fun onDestroy() {
super.onDestroy()
setMarkerStatus(true)
SearchServiceHolder.getMapUIController().showMyLocation(true)
}
companion object {
fun newInstance(type: Int = 0): Fragment {
var settingAddressFragment = SettingAddressFragment()
val bundle = Bundle()
bundle.putInt(AMapConstants.KEY_SET_HOME_COMPONY, type)

View File

@@ -121,6 +121,9 @@
android:layout_marginTop="@dimen/dp_32"
android:layout_width="600dp"
android:layout_height="0dp"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/txt_large"
app:layout_constraintBottom_toBottomOf="@id/tv_navi_wash"
android:background="@drawable/shape_round_gray"
app:layout_constraintTop_toBottomOf="@id/ll_navi_search"

View File

@@ -11,52 +11,6 @@
<include layout="@layout/include_search_bar" />
<TextView
android:layout_width="180dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="@dimen/dp_32"
android:textSize="@dimen/sp_40"
android:textColor="@color/white"
android:paddingLeft="@dimen/dp_56"
android:gravity="center_vertical"
android:background="@drawable/shape_round_gray"
android:text="@string/my_location_search"
android:drawablePadding="@dimen/dp_8"
android:id="@+id/tv_navi_my_location"
android:drawableLeft="@mipmap/icon_navi_location"
app:layout_constraintTop_toBottomOf="@+id/ll_navi_search"
android:layout_height="@dimen/dp_120"/>
<TextView
android:layout_width="180dp"
android:id="@+id/tv_navi_choose_point"
android:textSize="@dimen/sp_40"
app:layout_constraintLeft_toRightOf="@id/tv_navi_my_location"
app:layout_constraintTop_toTopOf="@id/tv_navi_my_location"
android:textColor="@color/white"
android:paddingLeft="@dimen/dp_56"
android:drawablePadding="@dimen/dp_8"
android:background="@drawable/shape_round_gray"
android:gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_32"
android:text="@string/choose_location_search"
android:drawableLeft="@mipmap/icon_navi_location"
android:layout_height="@dimen/dp_120"/>
<androidx.constraintlayout.widget.Group
android:id="@+id/group_set_address"
app:constraint_referenced_ids="tv_navi_choose_point,tv_navi_my_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="@dimen/dp_266"
android:text="@string/set_as_home_navi"
@@ -73,16 +27,4 @@
android:layout_height="@dimen/dp_104"/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="@dimen/dp_838"
android:id="@+id/rv_search_result"
android:visibility="gone"
android:paddingLeft="@dimen/dp_37"
android:paddingRight="@dimen/dp_37"
android:layout_marginTop="@dimen/dp_32"
android:background="@drawable/shape_round_gray"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_navi_search"
android:layout_height="@dimen/dp_778"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -3,4 +3,5 @@
<dimen name="txt_normal">@dimen/sp_32</dimen>
<dimen name="fragment_left_margin">@dimen/dp_60</dimen>
<dimen name="txt_title">@dimen/sp_40</dimen>
<dimen name="txt_large">25sp</dimen>
</resources>