Открывать карты 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 Map для получения направления. Я знаю, почему это так, потому что я использовал daddr
в url
, но я не знаю, что использовать для определенного местоположения. Пожалуйста, скажите мне, что использовать там.
Ответы
Ответ 1
Я не тестировал это, но вы могли попробовать:
Первый метод:
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..
Ответ 2
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);
Я надеюсь, что это поможет вам
Спасибо.
Ответ 3
Последняя версия карты обеспечивает лучшее решение. Если вы хотите показать адрес на карте, используйте ниже код.
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 - широта и долгота, которые вы хотите отобразить, метка здесь необязательна.
Ответ 4
Вы должны использовать что-то вроде этого
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();
}
Ответ 5
Это будет работать как шарм. Обязательно проверяйте наличие на Картах 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);
Ответ 6
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);
}
Обратитесь к этой документации
Ответ 7
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();
}
}
});
Ответ 8
Этот вспомогательный метод с использованием 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;
}
Ответ 9
https://www.google.com/maps/dir//37.4219983,-122.084
String location = "https://www.google.com/maps/dir//" + широта + "," + долгота; пытаться { SmsManager sms = SmsManager.getDefault();//используя Android SmsManager sms.sendTextMessage (число, ноль, сообщение + местоположение, ноль, ноль);//добавляем номер и текст Toast.makeText(getApplicationContext(), "Сообщение отправлено", Toast.LENGTH_SHORT).show(); } catch (исключение e) { Toast.makeText (это, "SMS не отправлено, проверьте номер телефона/сеть", Toast.LENGTH_SHORT).show(); e.printStackTrace(); }