簡體   English   中英

如何使用用戶輸入的地址(而不是經緯度或經度)來在Google地圖上存儲和顯示位置?

[英]How would I store and display a location on Google Maps using the address entered by the user and not the lat or long?

我正在使用Android Studio制作用於分配任務的應用程序,如何在用戶僅輸入街道地址,城市,郵政編碼/郵政編碼后注銷后將位置存儲並顯示在Google地圖上並留在那里,國家/地區,而不是經緯度或長期坐標?

首先,您需要將地址轉換為匹配的緯度經度對。 因此,如果我輸入Amsterdam ,它將返回該城市的緯度和經度。 這種轉換稱為地理編碼。 有一個Android教程 ,可以使用Geocoder類精確地做到這一點。 如果只想簡單地使用第一個值,這是RxJava 2的示例:

private Geocoder _geocoder;

public Observable<Location> convertAddressToLatLng(final String address) {
    if (_geocoder == null) {
        _geocoder = new Geocoder(_context);
    }
    return Observable.just(address)
            .map(new Func1<String, Location>() {
                @Override
                public Location call(String s) {
                    try {
                        List<Address> addressList = _geocoder.getFromLocationName(address, 1);
                        if (addressList != null && addressList.size() > 0) {
                            Address bestMatch = addressList.get(0);
                            Location result = new Location("");
                            result.setLatitude(bestMatch.getLatitude());
                            result.setLongitude(bestMatch.getLongitude());
                            return result;
                        } else {
                            return null;
                        }
                    } catch (IOException ex) {
                        Log.e(TAG, "Error while geocoding!", ex);
                        return null;
                    }
                 }
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM