открывать карты Google через намерение для конкретного местоположения в android
Я разрабатываю одно приложение, в котором я хочу показать конкретное местоположение на карте. Я передаю String
адреса, который уже размещен на Google Map
. Ниже приведен код моего Intent
..
String url = "http://maps.google.com/maps?daddr="+address; Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent);
Но это дает мне карту Google для получения направления. Я знаю, почему это так, потому что я использовал daddr
в url
но я не знаю, что использовать для определенного местоположения. daddr
скажите мне, что использовать там ..
- Использование Intent в приложении Android для отображения другого действия
- «Ошибка анализа: проблема с парсией пакета» при установке приложения Android
- Получение исключения отказа от разрешения
- CalledFromWrongThreadException: только исходный stream, создавший иерархию представлений, может касаться представлений
- Динамическое обновление адаптера AutoCompleteTextView
- Как проверить доступное пространство на устройстве Android? на SD-карте?
- Как прослушать изменения предпочтений в PreferenceFragment?
- Поиск в ListView с помощью EditText
- Youtube Api android autostart
- Как добавить банку в внешние библиотеки в студии android
- Android Volley - BasicNetwork.performRequest: Неожиданный код ответа 400
- Попытка удалить fragment из представления дает мне NullPointerException на mNextAnim
- Android Linkify text - Spannable Text в виде единого текста - как Twitter tweet
Я не тестировал это, но вы могли бы попробовать:
Первый метод:
String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); context.startActivity(intent);
EDIT: это может не сработать с картами Google 7,0
следовательно, вы можете изменить uri:
Второй вариант:
String geoUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + mTitle + ")";
где mTitle
– название местоположения.
Третий вариант:
geo:0,0?q=my+street+address
Четвертый вариант:
String map = "http://maps.google.co.in/maps?q=" + yourAddress;
Надеюсь, что это работает и помогает: D ..
Get Lat-Lng Использование этого веб-сервиса
http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false
Затем перейдите к этому коду
String strUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + "Label which you want" + ")"; Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(strUri)); intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); startActivity(intent);
Надеюсь, это поможет вам
Спасибо.
Последняя версия карты обеспечивает лучшее решение. Если вы хотите показать адрес на карте, используйте ниже код.
Uri mapUri = Uri.parse("geo:0,0?q=" + Uri.encode(address)); Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Если вы хотите отображать значения широты и долготы, используйте метод ниже.
Uri mapUri = Uri.parse("geo:0,0?q=lat,lng(label)"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Lat и lng – широта и долгота, которые вы хотите отобразить, ярлык здесь не является обязательным.
Вы должны использовать что-то вроде этого
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345")); startActivity(intent);
И сбросить штырь
try { Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:" + AppointmentDetailLayout.docLatitude + "," + AppointmentDetailLayout.docLongitude + "?q=" + AppointmentDetailLayout.docLatitude + "," + AppointmentDetailLayout.docLongitude + "(" + label + ")")); intent.setComponent(new ComponentName( "com.google.android.apps.maps", "com.google.android.maps.MapsActivity")); context.startActivity(intent); } catch (ActivityNotFoundException e) { try { context.startActivity(new Intent( Intent.ACTION_VIEW, Uri.parse("market://details?id=com.google.android.apps.maps"))); } catch (android.content.ActivityNotFoundException anfe) { context.startActivity(new Intent( Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=com.google.android.apps.maps"))); } e.printStackTrace(); }
Это будет работать как шарм. Обязательно проверяйте наличие на Картах Google, чтобы он мог работать повсеместно и на всех устройствах, отличных от Google. В таких случаях он откроется в браузере.
Также помните, что у вас нет www в URL. Иначе это не сработает.
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?q=loc:" + latitude + "," + longitude); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Only if initiating from a Broadcast Receiver String mapsPackageName = "com.google.android.apps.maps"; if (Utility.isPackageExisted(context, mapsPackageName)) { i.setClassName(mapsPackageName, "com.google.android.maps.MapsActivity"); i.setPackage(mapsPackageName); } context.startActivity(i);
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); if (mapIntent.resolveActivity(getPackageManager()) != null) { startActivity(mapIntent); }
См. Эту документацию
Этот вспомогательный метод с использованием uriBuilder для более чистого кода и условия обработки, если на устройстве нет активности, способной открывать карту
public static boolean openMap(Context context, String address) { Uri.Builder uriBuilder = new Uri.Builder() .scheme("geo") .path("0,0") .appendQueryParameter("q", address); Intent intent = new Intent(Intent.ACTION_VIEW, uriBuilder.build()); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); return true; } return false; }
try { Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr=" + src_lat+ "," + src_lng + "&daddr=" + des_lat + "," + des_lng)); startActivity(intent); }catch (ActivityNotFoundException ane){ Toast.makeText(activity, "Please Install Google Maps ", Toast.LENGTH_LONG).show(); }catch (Exception ex){ ex.getMessage(); } } });