瀏覽代碼

修改定位信息

316044749 7 年之前
父節點
當前提交
c216284de6

+ 2 - 0
app/build.gradle

@@ -54,6 +54,8 @@ dependencies {
     compile 'com.amap.api:navi-3dmap:5.6.0_3dmap5.7.0'
     //定位
     compile 'com.amap.api:location:3.8.0'
+    //搜索
+    compile 'com.amap.api:search:latest.integration'
     //友盟SDK
     compile 'com.umeng.analytics:analytics:latest.integration'
 }

+ 12 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/HomeActivity.java

@@ -22,6 +22,7 @@ import com.amap.api.location.AMapLocationClientOption;
 import com.amap.api.location.AMapLocationListener;
 import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.base.TitleBarActivity;
+import com.ynstkz.shitu.android.bean.LocationDataBean;
 import com.ynstkz.shitu.android.data.SharedPreferencesUtils;
 import com.ynstkz.shitu.android.event.LocationChangedEvent;
 import com.ynstkz.shitu.android.event.LoginEvent;
@@ -181,7 +182,11 @@ public class HomeActivity extends TitleBarActivity implements AMapLocationListen
         if (amapLocation != null) {
             if (amapLocation.getErrorCode() == 0) {
                 isLocationSuccess = true;
-                EventBus.getDefault().post(new LocationChangedEvent(amapLocation));
+                LocationDataBean locationDataBean = new LocationDataBean();
+                locationDataBean.setCity(amapLocation.getDistrict());
+                locationDataBean.setLatitude(amapLocation.getLatitude());
+                locationDataBean.setLongitude(amapLocation.getLongitude());
+                EventBus.getDefault().post(new LocationChangedEvent(locationDataBean));
                 SharedPreferencesUtils.setLocation(amapLocation.getDistrict());
             } else {
                 //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
@@ -228,12 +233,16 @@ public class HomeActivity extends TitleBarActivity implements AMapLocationListen
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
         switch (requestCode) {
             case 10:
                 if (resultCode == RESULT_OK) { //登陆成功
                     changleLayout(2);
                 }
                 break;
+            case 20:
+
+                break;
         }
     }
 
@@ -267,4 +276,6 @@ public class HomeActivity extends TitleBarActivity implements AMapLocationListen
         super.onDestroy();
         EventBus.getDefault().unregister(this);
     }
+
+
 }

+ 46 - 2
app/src/main/java/com/ynstkz/shitu/android/activity/LocationSelectActivity.java

@@ -11,6 +11,12 @@ import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import com.amap.api.services.core.LatLonPoint;
+import com.amap.api.services.geocoder.GeocodeAddress;
+import com.amap.api.services.geocoder.GeocodeQuery;
+import com.amap.api.services.geocoder.GeocodeResult;
+import com.amap.api.services.geocoder.GeocodeSearch;
+import com.amap.api.services.geocoder.RegeocodeResult;
 import com.common.library.cache.Cache;
 import com.common.library.okhttp.callback.Callback;
 import com.google.gson.Gson;
@@ -38,7 +44,7 @@ import okhttp3.Response;
  * 作者:fuchangle on 2018/2/9 11:26
  */
 
-public class LocationSelectActivity extends TitleBarActivity {
+public class LocationSelectActivity extends TitleBarActivity implements GeocodeSearch.OnGeocodeSearchListener {
 
     private final String KRY_LISTCACHEHISTORYCITY = "listCacheHistoryCity";
 
@@ -242,6 +248,44 @@ public class LocationSelectActivity extends TitleBarActivity {
         Intent intent = new Intent();
         intent.putExtra("result", city);
         setResult(RESULT_OK, intent);
-        finish();
+        //搜索经纬度
+        getAmapGeocode(city);
+    }
+
+
+
+    /**
+     * 获取城市经纬度
+     * @param address
+     */
+    private void getAmapGeocode(String address){
+        GeocodeSearch geocodeSearch = new GeocodeSearch(this);
+        geocodeSearch.setOnGeocodeSearchListener(this);
+
+        GeocodeQuery geocodeQuery = new GeocodeQuery(address, "");
+        geocodeSearch.getFromLocationNameAsyn(geocodeQuery);
+    }
+
+    @Override
+    public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
+
+    }
+
+    @Override
+    public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
+        List<GeocodeAddress> listGeocodeAddress = geocodeResult.getGeocodeAddressList();
+        if(listGeocodeAddress != null && listGeocodeAddress.size() > 0){
+            GeocodeAddress geocodeAddress = listGeocodeAddress.get(0);
+            LatLonPoint latLonPoint = geocodeAddress.getLatLonPoint();
+            double latitude = latLonPoint.getLatitude();
+            double longitude = latLonPoint.getLongitude();
+
+            Intent intent = new Intent();
+            intent.putExtra("city", geocodeAddress.getCity());
+            intent.putExtra("latitude", latitude);
+            intent.putExtra("longitude", longitude);
+            setResult(RESULT_OK, intent);
+            finish();
+        }
     }
 }

+ 55 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/OrgDetailActivity.java

@@ -80,6 +80,7 @@ public class OrgDetailActivity extends TitleBarActivity {
     LinearLayout llCommentMain;
 
     private int memberId;
+    private boolean isCollect;
     private OrgDetailBean.DataBean dataBean;
 
     @Override
@@ -146,7 +147,11 @@ public class OrgDetailActivity extends TitleBarActivity {
         ivCollect.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                collectOrg(memberId + "");
+                if(!isCollect){
+                    collectOrg(memberId + "");
+                } else {
+                    cacelCollectOrg(memberId + "");
+                }
             }
         });
     }
@@ -199,6 +204,8 @@ public class OrgDetailActivity extends TitleBarActivity {
         tvCollectcount.setText("收藏:" + dataBean.getCollectCount() + "次");
         tvAddress.setText(dataBean.getAddress());
         tvOrgDesc.setText(dataBean.getIntroduction());
+        isCollect = dataBean.isCollect();
+        initCollectIcon();
 
         //课程信息
         if (dataBean.getCourseList() != null && dataBean.getCourseList().size() > 0) {
@@ -262,11 +269,58 @@ public class OrgDetailActivity extends TitleBarActivity {
                 BaseBean baseBean = (BaseBean) response;
                 if (baseBean != null) {
                     if ("200".equals(baseBean.getCode())) {
+                        isCollect = true;
+                        initCollectIcon();
+                    }
+                    showToast(baseBean.getMsg());
+                }
+            }
+        });
+    }
+
+    /**
+     * 取消收藏
+     */
+    /**
+     * 收藏
+     *
+     * @param memberId
+     */
+    private void cacelCollectOrg(String memberId) {
+
+        RequestGroup.cancelCollect(memberId, new Callback() {
+            @Override
+            public Object parseNetworkResponse(Response response, int id) throws Exception {
+                return new Gson().fromJson(response.body().string(), BaseBean.class);
+            }
 
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                showToast(getString(R.string.error_msg));
+            }
+
+            @Override
+            public void onResponse(Object response, int id) {
+                BaseBean baseBean = (BaseBean) response;
+                if (baseBean != null) {
+                    if ("200".equals(baseBean.getCode())) {
+                        isCollect = false;
+                        initCollectIcon();
                     }
                     showToast(baseBean.getMsg());
                 }
             }
         });
     }
+
+    /**
+     * 初始化收藏图标
+     */
+    private void initCollectIcon(){
+        if(!isCollect){
+            ivCollect.setImageResource(R.drawable.collect_icon);
+        } else {
+            ivCollect.setImageResource(R.drawable.collect_press_icon);
+        }
+    }
 }

+ 1 - 3
app/src/main/java/com/ynstkz/shitu/android/activity/UserInfoActivity.java

@@ -124,9 +124,7 @@ public class UserInfoActivity extends TitleBarActivity {
                 dialog.setNegativeButton("确定", new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
-                        EventBus.getDefault().post(new LogoutEvent());
-                        SharedPreferencesUtils.setLogin(false);
-                        Cache.clean("UserBean");
+                        STSign.logout();
                         finish();
                     }
                 });

+ 13 - 0
app/src/main/java/com/ynstkz/shitu/android/application/STSign.java

@@ -17,9 +17,13 @@ import com.ynstkz.shitu.android.R;
 import com.ynstkz.shitu.android.bean.UserInfoBean;
 import com.ynstkz.shitu.android.common.Constants;
 import com.ynstkz.shitu.android.data.RequestGroup;
+import com.ynstkz.shitu.android.data.SharedPreferencesUtils;
+import com.ynstkz.shitu.android.event.LogoutEvent;
 import com.ynstkz.shitu.android.listener.CheckVerifyCodeCallback;
 import com.ynstkz.shitu.android.listener.VerifyCodeCallback;
 
+import org.greenrobot.eventbus.EventBus;
+
 import okhttp3.Call;
 import okhttp3.Response;
 
@@ -143,4 +147,13 @@ public class STSign {
             }
         });
     }
+
+    /**
+     * 退出登陆
+     */
+    public static void logout(){
+        EventBus.getDefault().post(new LogoutEvent());
+        SharedPreferencesUtils.setLogin(false);
+        Cache.clean("UserBean");
+    }
 }

+ 40 - 0
app/src/main/java/com/ynstkz/shitu/android/bean/LocationDataBean.java

@@ -0,0 +1,40 @@
+package com.ynstkz.shitu.android.bean;
+
+import com.ynstkz.shitu.android.base.BaseBean;
+
+/**
+ * 作者:fuchangle on 2018/3/19 16:08
+ */
+
+public class LocationDataBean extends BaseBean{
+
+    private String city;
+
+    double latitude;
+
+    double longitude;
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public double getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(double latitude) {
+        this.latitude = latitude;
+    }
+
+    public double getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(double longitude) {
+        this.longitude = longitude;
+    }
+}

+ 8 - 0
app/src/main/java/com/ynstkz/shitu/android/bean/OrgDetailBean.java

@@ -35,6 +35,7 @@ public class OrgDetailBean extends BaseBean{
         private List<EvaluateListBean> evaluateList;
         private List<CourseItemBean> courseList;
         private List<String> showPicList;
+        private boolean isCollect;
 
         public String getAddress() {
             return address;
@@ -140,5 +141,12 @@ public class OrgDetailBean extends BaseBean{
             this.showPicList = showPicList;
         }
 
+        public boolean isCollect() {
+            return isCollect;
+        }
+
+        public void setCollect(boolean collect) {
+            isCollect = collect;
+        }
     }
 }

+ 2 - 0
app/src/main/java/com/ynstkz/shitu/android/common/Constants.java

@@ -14,6 +14,8 @@ public class Constants {
 
     public static final String DOWNLOAD_IMAGE_NAME = "image";
 
+    public static final String KEY_AMAP_LOCATION = "45fb5d8b52ba4f9f214bfb4fdaf81a72";
+
     //昆明火车站经纬度
     public static final String KM_LONGITUDE = "102.722247";
     public static final String KM_LATITUDE = "25.015298";

+ 14 - 0
app/src/main/java/com/ynstkz/shitu/android/data/RequestGroup.java

@@ -8,6 +8,7 @@ import com.common.library.okhttp.callback.Callback;
 import com.google.gson.Gson;
 import com.ynstkz.shitu.android.application.STSign;
 import com.ynstkz.shitu.android.bean.UserInfoBean;
+import com.ynstkz.shitu.android.common.Constants;
 
 import java.io.File;
 import java.net.URL;
@@ -378,4 +379,17 @@ public class RequestGroup {
         OkHttpUtils.get().url(UrlCat.URL_COLLECT_SUBMIT).addHeader(KEY_TOKEN,
                 SharedPreferencesUtils.getToken()).params(params).build().execute(callback);
     }
+
+    /**
+     * 取消收藏
+     * @param memberId
+     * @param callback
+     */
+    public static void cancelCollect(String memberId, Callback callback){
+        Map<String, String> params = getSystemParams();
+        params.put("memberId", memberId);
+        OkHttpUtils.get().url(UrlCat.URL_COLLECT_CANCEL).addHeader(KEY_TOKEN,
+                SharedPreferencesUtils.getToken()).params(params).build().execute(callback);
+    }
+
 }

+ 6 - 0
app/src/main/java/com/ynstkz/shitu/android/data/UrlCat.java

@@ -152,6 +152,12 @@ public class UrlCat {
      * 提交收藏
      */
     public static final String URL_COLLECT_SUBMIT = HOST + "api/collect/submit";
+
+    /**
+     * 取消收藏
+     */
+    public static final String URL_COLLECT_CANCEL = HOST + "api/collect/cancel";
+
 }
 
 

+ 8 - 7
app/src/main/java/com/ynstkz/shitu/android/event/LocationChangedEvent.java

@@ -1,6 +1,7 @@
 package com.ynstkz.shitu.android.event;
 
 import com.amap.api.location.AMapLocation;
+import com.ynstkz.shitu.android.bean.LocationDataBean;
 
 /**
  * 作者:fuchangle on 2018/2/8 15:42
@@ -8,17 +9,17 @@ import com.amap.api.location.AMapLocation;
 
 public class LocationChangedEvent {
 
-    private AMapLocation amapLocation;
+    private LocationDataBean locationDataBean;
 
-    public LocationChangedEvent(AMapLocation amapLocation) {
-        this.amapLocation = amapLocation;
+    public LocationChangedEvent(LocationDataBean amapLocation) {
+        this.locationDataBean = amapLocation;
     }
 
-    public AMapLocation getAmapLocation() {
-        return amapLocation;
+    public LocationDataBean getLocationDataBean() {
+        return locationDataBean;
     }
 
-    public void setAmapLocation(AMapLocation amapLocation) {
-        this.amapLocation = amapLocation;
+    public void setLocationDataBean(LocationDataBean locationDataBean) {
+        this.locationDataBean = locationDataBean;
     }
 }

+ 24 - 12
app/src/main/java/com/ynstkz/shitu/android/fragment/HomeFragment.java

@@ -1,6 +1,7 @@
 package com.ynstkz.shitu.android.fragment;
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
@@ -41,10 +42,12 @@ import com.ynstkz.shitu.android.base.BaseFragment;
 import com.ynstkz.shitu.android.bean.CourseItemBean;
 import com.ynstkz.shitu.android.bean.CourseNavigationBean;
 import com.ynstkz.shitu.android.bean.HomeBannerBean;
+import com.ynstkz.shitu.android.bean.LocationDataBean;
 import com.ynstkz.shitu.android.bean.OrgItemBean;
 import com.ynstkz.shitu.android.bean.OrgRecommendListBean;
 import com.ynstkz.shitu.android.common.Constants;
 import com.ynstkz.shitu.android.data.RequestGroup;
+import com.ynstkz.shitu.android.data.SharedPreferencesUtils;
 import com.ynstkz.shitu.android.event.LocationChangedEvent;
 import com.ynstkz.shitu.android.view.ScrollViewWithGridView;
 
@@ -144,7 +147,7 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
         llLocationSelect.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityForResult(new Intent(getActivity(), LocationSelectActivity.class), 10);
+                startActivityForResult(new Intent(getActivity(), LocationSelectActivity.class), 20);
             }
         });
 
@@ -457,12 +460,12 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(LocationChangedEvent event) {
-        if (event.getAmapLocation() != null) {
-            tvLocation.setText(event.getAmapLocation().getDistrict());
+        if (event.getLocationDataBean() != null) {
+            tvLocation.setText(event.getLocationDataBean().getCity());
             //获取推荐机构列表
             pageNumber = 1;
-            longitude = event.getAmapLocation().getLongitude();
-            latitude = event.getAmapLocation().getLatitude();
+            longitude = event.getLocationDataBean().getLongitude();
+            latitude = event.getLocationDataBean().getLatitude();
             getOrgRecommendList(longitude + "," + latitude);
         } else {
             pageNumber = 1;
@@ -472,6 +475,22 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
     }
 
     @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        switch (requestCode){
+            case 20:
+                if(resultCode == Activity.RESULT_OK) {
+                    LocationDataBean locationDataBean = new LocationDataBean();
+                    locationDataBean.setCity(data.getStringExtra("city"));
+                    locationDataBean.setLatitude(data.getDoubleExtra("latitude", 0));
+                    locationDataBean.setLongitude(data.getDoubleExtra("longitude", 0));
+                    EventBus.getDefault().post(new LocationChangedEvent(locationDataBean));
+                    SharedPreferencesUtils.setLocation(data.getStringExtra("city"));
+                }
+                break;
+        }
+    }
+
+    @Override
     public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
         pageNumber = 1;
         getOrgRecommendList(longitude + "," + latitude);
@@ -484,13 +503,6 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
     }
 
     @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-
-        }
-    }
-
-    @Override
     public void onDestroyView() {
         super.onDestroyView();
         ButterKnife.unbind(this);

+ 8 - 5
app/src/main/java/com/ynstkz/shitu/android/fragment/OrgListFragment.java

@@ -28,6 +28,7 @@ import com.ynstkz.shitu.android.application.STSign;
 import com.ynstkz.shitu.android.base.BaseFragment;
 import com.ynstkz.shitu.android.bean.OrgItemBean;
 import com.ynstkz.shitu.android.bean.OrgListBean;
+import com.ynstkz.shitu.android.common.Constants;
 import com.ynstkz.shitu.android.data.RequestGroup;
 import com.ynstkz.shitu.android.event.LocationChangedEvent;
 
@@ -99,7 +100,8 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
     }
 
     private void initData() {
-
+        pageNumber = 1;
+        getOrgList(Constants.KM_LONGITUDE + "," + Constants.KM_LATITUDE);
     }
 
     private void setListener() {
@@ -280,12 +282,12 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(LocationChangedEvent event) {
-        if (event.getAmapLocation() != null) {
-            tvLocation.setText(event.getAmapLocation().getDistrict());
+        if (event.getLocationDataBean() != null) {
+            tvLocation.setText(event.getLocationDataBean().getCity());
             //获取推荐机构列表
             pageNumber = 1;
-            longitude = event.getAmapLocation().getLongitude();
-            latitude = event.getAmapLocation().getLatitude();
+            longitude = event.getLocationDataBean().getLongitude();
+            latitude = event.getLocationDataBean().getLatitude();
             getOrgList(longitude + "," + latitude);
         } else {
             pageNumber = 1;
@@ -311,4 +313,5 @@ public class OrgListFragment extends BaseFragment implements PullToRefreshBase.O
         ButterKnife.unbind(this);
         EventBus.getDefault().unregister(this);
     }
+
 }

+ 2 - 0
app/src/main/java/com/ynstkz/shitu/android/fragment/UserCenterFragment.java

@@ -185,6 +185,8 @@ public class UserCenterFragment extends BaseFragment {
                     if("200".equals(userInfoBean.getCode())){
                         initUserInfo(userInfoBean);
                         STSign.getInstance().setUserInfo(userInfoBean);
+                    } else if ("401".equals(userInfoBean.getCode())){
+                        STSign.logout();
                     }
                 }
             }

二進制
app/src/main/res/drawable-xxhdpi/collect_press_icon.png