Как найти широту и долготу от адреса?
Я хочу показать местоположение адреса на Картах Google.
Как получить широту и долготу адреса с помощью API Карт Google?
- Размер изображения для всех экранных устройств
- Как получить файл .apk приложения программным путем
- Межстраничные объявления Admob: «IllegalStateException: только действия в полноэкранном режиме могут запрашивать ориентацию»
- android: использование ActivityGroup для включения действий
- использование enableAutoManage () в fragmentе
- Кнопка возврата к fragmentу
- Разница между событием OnClick () и OnClickListener?
- Фрагмент над другим fragmentом
- Как написать стиль в текст ошибки EditText в Android?
- Возможно ли для TextView Marquee в виджетах расширить приложение AppWidgetProvider?
- Добавление расширяемогоListView в NavigationView
- java.lang.RuntimeException: сбой takePicture
- Как создать кнопку динамически в android?
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(); }