Как найти широту и долготу от адреса?

Я хочу показать местоположение адреса на Картах Google.

Как получить широту и долготу адреса с помощью API Карт Google?

public GeoPoint getLocationFromAddress(String strAddress){ Geocoder coder = new Geocoder(this); List
address; GeoPoint p1 = null; try { address = coder.getFromLocationName(strAddress,5); if (address==null) { return null; } Address location=address.get(0); location.getLatitude(); location.getLongitude(); p1 = new GeoPoint((double) (location.getLatitude() * 1E6), (double) (location.getLongitude() * 1E6)); return p1; } }

strAddress – это строка, содержащая адрес. Переменная address содержит преобразованные адреса.

Решение Ud_an с обновленными API

Примечание . Класс LatLng входит в состав Служб Google Play.

Обязательно :

   

Обновление. Если у вас есть целевой SDK 23 и выше, убедитесь, что вы позаботились о разрешении времени выполнения для местоположения.

 public LatLng getLocationFromAddress(Context context,String strAddress) { Geocoder coder = new Geocoder(context); List
address; LatLng p1 = null; try { // May throw an IOException address = coder.getFromLocationName(strAddress, 5); if (address == null) { return null; } Address location = address.get(0); p1 = new LatLng(location.getLatitude(), location.getLongitude() ); } catch (IOException ex) { ex.printStackTrace(); } return p1; }

Если вы хотите разместить свой адрес на карте Google, тогда вам будет проще использовать следующие

 Intent searchAddress = new Intent(Intent.ACTION_VIEW,Uri.parse("geo:0,0?q="+address)); startActivity(searchAddress); 

ИЛИ

если вам нужно получить lat long с вашего адреса, используйте Google Place Api после

создать метод, который возвращает JSONObject с ответом HTTP-вызова, как показано ниже.

 public static JSONObject getLocationInfo(String address) { StringBuilder stringBuilder = new StringBuilder(); try { address = address.replaceAll(" ","%20"); HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false"); HttpClient client = new DefaultHttpClient(); HttpResponse response; stringBuilder = new StringBuilder(); response = client.execute(httppost); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } } catch (ClientProtocolException e) { } catch (IOException e) { } JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return jsonObject; } 

теперь передайте метод JSONObject для getLatLong (), например, следующий

 public static boolean getLatLong(JSONObject jsonObject) { try { longitute = ((JSONArray)jsonObject.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lng"); latitude = ((JSONArray)jsonObject.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lat"); } catch (JSONException e) { return false; } return true; } 

Надеюсь, это поможет вам и другим. !! Спасибо..!!

Следующий код будет работать для google apiv2:

 public void convertAddress() { if (address != null && !address.isEmpty()) { try { List
addressList = geoCoder.getFromLocationName(address, 1); if (addressList != null && addressList.size() > 0) { double lat = addressList.get(0).getLatitude(); double lng = addressList.get(0).getLongitude(); } } catch (Exception e) { e.printStackTrace(); } // end catch } // end if } // end convertAddress

Где адрес String (123 Testing Rd City State zip), который вы хотите преобразовать в LatLng.

Вот как вы можете найти широту и долготу того, где мы нажимаем на карте.

 public boolean onTouchEvent(MotionEvent event, MapView mapView) { //---when user lifts his finger--- if (event.getAction() == 1) { GeoPoint p = mapView.getProjection().fromPixels( (int) event.getX(), (int) event.getY()); Toast.makeText(getBaseContext(), p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6() /1E6 , Toast.LENGTH_SHORT).show(); } return false; } 

это работает хорошо.

Чтобы получить адрес местонахождения, мы можем использовать class геокодера.

Ответ на проблему Кандхи выше:

Он выбрасывает «java.io.IOException сервис недоступен», я уже дал эти разрешения и включил библиотеку … я могу получить представление карты … он бросает это IOException в геокодер …

Я просто добавил catch IOException после попытки и решил проблему

  catch(IOException ioEx){ return null; } 
 Geocoder coder = new Geocoder(this); List
addresses; try { addresses = coder.getFromLocationName(address, 5); if (addresses == null) { } Address location = addresses.get(0); double lat = location.getLatitude(); double lng = location.getLongitude(); Log.i("Lat",""+lat); Log.i("Lng",""+lng); LatLng latLng = new LatLng(lat,lng); MarkerOptions markerOptions = new MarkerOptions(); markerOptions.position(latLng); googleMap.addMarker(markerOptions); googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,12)); } catch (IOException e) { e.printStackTrace(); }
  • Способ получения всех EditTexts в представлении
  • Как узнать размер файла перед его загрузкой?
  • Постоянно скрывать панель навигации в действии
  • Spinner onItemSelected () выполняет ненадлежащим образом
  • Служба Android останавливается, когда приложение закрыто
  • Ошибка разрешения хранилища в Marshmallow
  • React Native android build не удалось. Местоположение SDK не найдено
  • WebView Rendering Issue в Android KitKat
  • Как сделать HTTP-запрос с помощью файлов cookie на Android?
  • Как отключить звуковые эффекты по умолчанию для всех моих приложений или действий
  • Создание Android-сервиса с помощью Phonegap? (У вас есть приложение для телефонного звонка, даже если оно закрыто)
  • Давайте будем гением компьютера.