过滤部分无效的地理编码和逆地理编码

This commit is contained in:
wangcongtao
2020-08-04 09:58:47 +08:00
parent 7f93590d8c
commit f0b38e9f2e
3 changed files with 44 additions and 2 deletions

View File

@@ -4,9 +4,11 @@ import android.content.Context;
import com.amap.api.services.core.AMapException;
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.RegeocodeAddress;
import com.amap.api.services.geocoder.RegeocodeQuery;
import com.amap.api.services.geocoder.RegeocodeResult;
import com.mogo.map.exception.MogoMapException;
import com.mogo.map.impl.amap.utils.ObjectUtils;
@@ -16,6 +18,7 @@ import com.mogo.map.search.geo.MogoGeocodeAddress;
import com.mogo.map.search.geo.MogoRegeocodeAddress;
import com.mogo.map.search.geo.query.MogoGeocodeQuery;
import com.mogo.map.search.geo.query.MogoRegeocodeQuery;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.List;
@@ -28,6 +31,8 @@ import java.util.List;
*/
public class GeocodeSearchClient implements IMogoGeoSearch, GeocodeSearch.OnGeocodeSearchListener {
private static final String TAG = "GeocodeSearchClient";
private GeocodeSearch mClient;
private IMogoGeoSearchListener mListener;
@@ -74,14 +79,32 @@ public class GeocodeSearchClient implements IMogoGeoSearch, GeocodeSearch.OnGeoc
@Override
public void getFromLocationAsyn( MogoRegeocodeQuery query ) {
if ( mClient != null ) {
mClient.getFromLocationAsyn( ObjectUtils.fromMogo( query ) );
if ( query == null ) {
Logger.e( TAG, "query parameter is null." );
return;
}
RegeocodeQuery origin = ObjectUtils.fromMogo( query );
if ( origin == null || !query.check() ) {
Logger.e( TAG, "query parameter is null or no point parameter." );
return;
}
mClient.getFromLocationAsyn( origin );
}
}
@Override
public void getFromLocationNameAsyn( MogoGeocodeQuery query ) {
if ( mClient != null ) {
mClient.getFromLocationNameAsyn( ObjectUtils.fromMogo( query ) );
if ( query == null ) {
Logger.e( TAG, "query parameter is null." );
return;
}
GeocodeQuery origin = ObjectUtils.fromMogo( query );
if ( origin == null || !query.check() ) {
Logger.e( TAG, "query parameter is null or locationName is empty." );
return;
}
mClient.getFromLocationNameAsyn( origin );
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.map.search.geo.query;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
/**
* @author congtaowang
@@ -29,6 +30,12 @@ public class MogoGeocodeQuery implements Parcelable {
this.city = city;
}
public boolean check(){
if ( TextUtils.isEmpty( locationName ) ) {
return false;
}
return true;
}
@Override
public int describeContents() {

View File

@@ -50,6 +50,18 @@ public class MogoRegeocodeQuery implements Parcelable {
this.poiType = poiType;
}
public boolean check() {
if ( point == null ) {
return false;
}
if ( point.lat < 1 && point.lon < 1 ) {
return false;
}
if ( radius < 0 ) {
return false;
}
return true;
}
@Override
public int describeContents() {