#android #google-maps #kotlin
#Android #google-карты #kotlin
Вопрос:
Всякий раз, когда я запускаю свое намерение Google Maps, уровень масштабирования по какой-то причине не меняется. Это ошибка или есть что-то, что я делаю неправильно?
Класс данных
data class MyDataClass(val myCoordinates: String)
Класс фрагмента
...
val myDetails = myList[position] as MyDataClass
val myClickListener = View.OnClickListener {
val gmmIntentUri = Uri.parse("geo:0,0?q=" myDetails.myCoordinates "?z=8amp;(Google Australia)")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
holder.environsEButton.context.startActivity(mapIntent)
holder.myButton.context.startActivity(mapIntent)
}
...
Класс фрагмента
...
myList.add(MyDataClass("25.5153717,-0.1000000"))
...
Ответ №1:
Масштаб уже представлен z=8
, но местоположение должно быть: geo:25.5153717,-0.1000000
. Просто посмотрите документацию… хотя я бы предположил, что при передаче как координат, так и строки местоположения он может выбрать один из них, а не оба (поскольку эти запросы могут противоречить самим себе, если они не будут ссылаться на одно и то же местоположение).
Комментарии:
1. Оба ответа говорят о 2 совершенно разных вещах. Что
geo
на самом деле означает?2.
geo
может означать географическое местоположение, которое равно координатам. и я бы полностью согласился с другим ответом, что строка запроса могла быть искажена; они всегда начинаются с a?
, а затем дополнительные параметры объединяются с aamp;
.3. Жаль, что проблема, связанная с тем, что пользовательская метка не отображается , до сих пор не устранена спустя несколько лет. В качестве альтернативы я планировал показать a
MapView
с несколькими маркерами, но я пытаюсь избежать ограничения в 44 тыс. методов, поскольку у меня есть много разных мест, чтобы показать, что большинство из них — дюжина маркеров на aMapView
. Будет ли использовать Google Maps Intents для Android (не Maps SDK). используйте меньше методов в целом из-за намерений? Я почти уверен, что зависимость имеет много методов (несмотря на то, что она является androidx), многие из которых мне, вероятно, не нужны.4. Я также должен добавить, что каждые 6 месяцев мой MapView становится пустым по какой-то странной причине, из-за чего я избегаю его использования. Необходимость так часто сбрасывать мой ключ очень раздражает.
Ответ №2:
Хорошо, вы используете намерения Google Maps для Android (не Maps SDK)
Могу ли я предложить интерполяцию строк
val zoomLevel : Int = 8
val gmmIntentUri = Uri.parse("geo:0,0?q=${myDetails.myCoordinates}amp;z=${zoomLevel}amp;(Google Australia)")
Чтобы изменить уровень масштабирования, вы можете установить значение zoomLevel
от 0 до 23.
В вашем MyDataClass
вы можете добавить поле zoomLevel.
Редактировать: при ближайшем рассмотрении ваш Uri начинался с ?q
, следующий параметр должен быть ?z
вместо amp;z
. Вот почему ваш масштаб не отображался.
См. https://developers.google.com/maps/documentation/urls/android-intents
Комментарии:
1. Отлично, но теперь маркер больше не появляется.
2. @Swarthy46,
geo:0,0
они вернулись к маркеру3. В этом случае оба ответа не так уж и неверны.
4. Должно ли это быть так?
val gmmIntentUri = Uri.parse("geo:0,0?q=${myDetails.myCoordinates}?z=${zoomLevel}(Google Australia)")