У меня есть API_Key (в этом посте я, конечно, показываю фальшивый) Это не похоже на работу.
Мои предположения (возможно, неверные):
1) googeMaps api_Key одинаков для направлений Api
2) Библиотека должна быть в состоянии вытащить ключ автоматически (без моего участия, по крайней мере, так сказал мне старший разработчик).
Когда я не устанавливаю ключ API вручную, я получаю эту ошибку:
Must provide either API key or Maps for Work credentials.
Таким образом, я статически вставил ключ g eoApiContext.setApiKey("aaksijbdfiuewifn")
, и затем я получил это сообщение:
This IP, site or mobile application is not authorized to use this API key. Request received from IP address 67.207.40.144, with empty referer
Вопрос (s)
1) Могу ли я использовать GoogleMapsApi в качестве DirectionsApi?
2) должны ли GeoApiContext
и DirectionsApi
автоматически получать API_Key из манифеста?
3) Почему это не работает, когда я вручную устанавливаю api_key?
Соответствующие фрагменты кода:
Manifest:
<application>
<!-- Google MAP API key (standard account for debug builds) -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="salkdfnaspkfasdsdf" />
</application>
и DirectionApiHelper:
fun requestDirections(onSuccess: (DirectionsResult) -> Unit, onError: (String) -> Unit, vararg wayPoints: LatLng) {
Single.fromCallable {
val dirApiRequest: DirectionsApiRequest = DirectionsApi.getDirections(getGeoContext(), "", "")
dirApiRequest.mode(travelMode)
dirApiRequest.destination(destinationPosition)
dirApiRequest.origin(originPosition)
dirApiRequest.units(unit)
dirApiRequest.waypoints(*wayPoints)
dirApiRequest.optimizeWaypoints(optimize)
return@fromCallable dirApiRequest.await()
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ directionsResult -> onSuccess(directionsResult) },
{ error -> onError(error.message?: "directions API failed") } //Log.e(TAG, "failed to get Directions: ${error.message}")
)
}
private fun getGeoContext(): GeoApiContext {
return GeoApiContext().setQueryRateLimit(3)
.setApiKey("SOIdfwioewoinAIEsoiehf")
.setConnectTimeout(3, TimeUnit.SECONDS)
.setReadTimeout(3, TimeUnit.SECONDS)
.setWriteTimeout(3, TimeUnit.SECONDS)
}