Кончик
Если вы ищете клиентские библиотеки Java для следующих API, см. API платформы Google Maps в библиотеках Cloud Client для Java (выпуски).
Новые API не будут добавлены в эту клиентскую библиотеку.
Используйте Java? Хотите что -нибудь геокодировать? Ищете указания? Может быть, матрицы направлений? Эта библиотека приносит веб-сервис Google Maps API в ваше приложение Java на стороне сервера.
Java Client for Google Maps Services - это клиентская библиотека Java для следующих API Google Maps:
Services Java Client для Google Maps разработана для использования в приложениях как сервера, так и в приложениях Android. В любом случае, важно добавить ограничения ключей API, чтобы улучшить безопасность вашего ключа API. Дополнительные меры безопасности, такие как скрытие вашего ключа от контроля версий, также должны быть приняты для дальнейшего повышения безопасности вашего API -ключа.
Вы можете обратиться к лучшим практикам безопасности API, чтобы узнать больше об этой теме.
Примечание
Если вы используете эту библиотеку на Android, убедитесь, что ваше приложение использует хотя бы версию 0.19.0 этой библиотеки, чтобы можно было обеспечить ограничения клавиш API.
Вы можете добавить библиотеку в свой проект через Maven или Gradle.
Примечание
Поскольку 0,1,18 сейчас существует зависимость от SLF4J. Вам нужно добавить одну из адаптерных зависимостей, которая имеет смысл для вашей настройки журнала. В приведенных ниже образцах конфигурации мы интегрируем SLF4J-NOP, но есть и другие, такие как SLF4J-LOG4J12 и SLF4J-JDK14, которые будут иметь больше смысла в других конфигурациях. Это остановит предупреждающее сообщение, которое испускается, когда вы начнете использовать google-maps-services
.
< dependency >
< groupId >com.google.maps</ groupId >
< artifactId >google-maps-services</ artifactId >
< version >(insert latest version)</ version >
</ dependency >
< dependency >
< groupId >org.slf4j</ groupId >
< artifactId >slf4j-simple</ artifactId >
< version >1.7.25</ version >
</ dependency >
repositories {
mavenCentral()
}
dependencies {
implementation ' com.google.maps:google-maps-services:(insert latest version) '
implementation ' org.slf4j:slf4j-simple:1.7.25 '
}
Вы можете найти последнюю версию в верхней части этого Readme или поиск Maven Central.
Посмотреть Javadoc.
Дополнительная документация для включенных веб -сервисов доступна по адресу https://developers.google.com/maps/.
В этом примере используется API геокодирования с ключом API:
GeoApiContext context = new GeoApiContext . Builder ()
. apiKey ( "AIza..." )
. build ();
GeocodingResponse response = GeocodingApi . geocode ( context ,
"1600 Amphitheatre Parkway Mountain View, CA 94043" ). await ();
Gson gson = new GsonBuilder (). setPrettyPrinting (). create ();
System . out . println ( gson . toJson ( response . results [ 0 ]. addressComponents ));
// Invoke .shutdown() after your application is done making requests
context . shutdown ();
Примечание: GeoApiContext
разработан как синглтон в вашем приложении. Пожалуйста, создайте экземпляр для запуска приложения и продолжайте использовать его в течение срока службы вашего приложения. Это позволит правильному применению QPS во всех ваших запросах.
В конце выполнения вызовите метод shutdown()
GeoApiContext
, в противном случае поток останется созданным в памяти.
Для получения дополнительных примеров, ознакомьтесь с тестами.
Чтобы использовать Google App Engine с этой клиентской библиотекой, добавьте последнюю зависимость приложения двигателя в свой файл build.gradle
:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
Затем вы можете использовать эту клиентскую библиотеку в Google App Engine со следующим изменением кода:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
new GaeRequestHandler.Builder()
в GeoApiContext.Builder
requestHandlerBuilder
сообщает клиенту Java для служб Google Maps для использования соответствующих вызовов для выполнения HTTP -запросов из Google App Engine, а не стратегии на основе OKHTTP3.
Никогда больше не спи между запросами! По умолчанию запросы отправляются в ожидаемых пределах ставки для каждой веб -службы, обычно 50 запросов в секунду для бесплатных пользователей. Если вы хотите ускорить или замедлить запросы, вы также можете это сделать, используя new GeoApiContext.Builder().queryRateLimit(qps).build()
. Обратите внимание, что вам все еще нужно вручную обрабатывать задержку между первоначальным запросом и последовательными страницами, когда вы поднимаетесь через несколько наборов результатов.
Автоматически повторно повторно, когда возникают прерывистые сбои. То есть, когда какие -либо из поиска 5xx ошибки возвращаются из API.
Чтобы изменить или отключить автоматические повторения, см. Эти методы в GeoApiContext
:
.disableRetries()
.maxRetries()
.retryTimeout()
.setIfExceptionIsAllowedToRetry()
Нативные объекты для каждого из ответов API.
Все запросы поддерживают синхронный или асинхронный стиль вызова.
GeocodingApiRequest req = GeocodingApi . newRequest ( context ). address ( "Sydney" );
// Synchronous
try {
req . await ();
// Handle successful request.
} catch ( Exception e ) {
// Handle error
}
req . awaitIgnoreError (); // No checked exception.
// Async
req . setCallback ( new PendingResult . Callback < GeocodingResponse >() {
@ Override
public void onResult ( GeocodingResponse result ) {
// Handle successful request.
}
@ Override
public void onFailure ( Throwable e ) {
// Handle error.
}
});
Примечание
Вам понадобится ключ API для запуска тестов.
# Compile and package the project
$ ./gradlew jar
# Run the tests
$ ./gradlew test
В этой библиотеке используются сервисы платформы Google Maps. Использование услуг платформы Google Maps через эту библиотеку подлежит условиям услуг платформы Google Maps.
Эта библиотека не является основной сервисом платформы Google Maps. Таким образом, условия обслуживания платформы Google Maps (например, службы технической поддержки, соглашения об уровне обслуживания и политика снижения) не применяются к коду в этой библиотеке.
Эта библиотека предлагается через лицензию с открытым исходным кодом. Он не регулируется руководящими принципами служб технической поддержки платформы Google Maps, SLA или политикой управления (однако любые услуги платформы Google Maps, используемые библиотекой, остаются предметом условий обслуживания платформы Google).
Эта библиотека придерживается семантического управления версиями, чтобы указать, когда вносятся непосредственные изменения. Соответственно, в то время как библиотека находится в версии 0.x, в любое время могут быть введены задом наперед изменения.
Если вы найдете ошибку или имеете запрос на функции, пожалуйста, подайте проблему на GitHub. Если вы хотите получить ответы на технические вопросы от других разработчиков платформ Google Maps, спросите один из наших каналов сообщества разработчиков. Если вы хотите внести свой вклад, пожалуйста, проверьте руководство по применению в репозитории GitHub.