当我的用户运行我的具有Google地图的应用程序且他们没有互联网时,会调用 OnMapReady ,但我无法放置标记或加载叠加层。如何检测GoogleMaps是否已确认我的APIKEY,并准备好在用户访问互联网之前放置叠加层和标记?当前,它显示空白屏幕,这对新用户而言不是很好的体验。我想检测到当前无法加载地图图块,并提醒用户有关连接到互联网的信息。
答案 0 :(得分:1)
首先,由于用户需要在Google端检查API_KEY,因此无法在用户访问Internet之前使用受Google地图保护的API_KEY部分。但是您可以将其用于任务:尝试(在执行地图操作之前)执行需要API_KEY(例如Directions API URL)的Google Maps API URL:
https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=YOUR_API_KEY
...
URL url = new URL(buildDirectionsUrl("https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=YOUR_API_KEY");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int responseCode = connection.getResponseCode();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder jsonStringBuilder = new StringBuilder();
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line+"\n");
jsonStringBuilder.append(line);
jsonStringBuilder.append("\n");
}
JSONObject jsonRoot = new JSONObject(jsonStringBuilder.toString());
...
比获取并分析响应(jsonRoot
):如果在特定时间没有响应-没有互联网连接或无法访问Google URL;如果Google返回错误,则可以解析"error_message"
(例如"Keyless access to Google Maps Platform is deprecated..."
)等。