Я пытаюсь показать карту Google в веб-обозрении, но в ней говорится:
Платформа Google Maps отклонила ваш запрос.Неверный запрос.Неверный параметр 'pb'.
Но когда я отображаю тот же iframe в веб-браузере, он отлично работает
Вот то, что я пытаюсь отобразить в веб-представлении, этострока, хранящаяся в переменной iframeData
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <body> <iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d14988.154038971099!2d57.510438!3d-20.090677!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xc479c0ed4774c8e7!2sThe+Westin+Turtle+Bay+Resort+%26+Spa%2C+Mauritius!5e0!3m2!1sen!2smu!4v1513055435928" width="340.0" height="250" frameborder="0" style="border:0" allowfullscreen></iframe> </body> </html>
И это мой код Android для рендеринга этого iframe в веб-просмотр
String iframeData = //look above WebView webViewMap = (WebView) rootView.findViewById(R.id.webViewMap); WebSettings settings = webViewMap.getSettings(); settings.setJavaScriptEnabled(true); settings.setBuiltInZoomControls(true); settings.setSupportZoom(false); settings.setUseWideViewPort(false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { settings.setAllowUniversalAccessFromFileURLs(true); } settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); webViewMap.loadData(iframeData, "text/html", null);
ПРАВИЛЬНЫЙ ОТВЕТ:
Кодируйте URL, используя URLEncoder.encode (...), чтобы экранировать символы и решить проблему.
String googleMapLink = "https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d14988.154038971099!2d57.510438!3d-20.090677!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xc479c0ed4774c8e7!2sThe+Westin+Turtle+Bay+Resort+%26+Spa%2C+Mauritius!5e0!3m2!1sen!2smu!4v1513055435928"; String encodedUrl = null; try { encodedUrl = URLEncoder.encode(googleMapLink,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String iframe = "<iframe src=\""+ encodedUrl +"\" width=\"100%\" height=\"100%\" frameborder=\"0\" style=\"border:0\" allowfullscreen></iframe>"; googlemap_webView.getSettings().setJavaScriptEnabled(true); googlemap_webView.loadData(iframe, "text/html", "utf-8");
URL внутри iframe в вашем примере выглядит как ссылка, полученная из общего ресурса на веб-сайте Google Maps.Обычно этот URL не следует рассматривать как продукт Google Maps Platform.Однако по какой-то причине Google рассматривает ее как платформу Google Maps в компоненте WebView.
iframe
WebView
Я думаю, что это ошибка на стороне Google.
Временное решение - заменить URL для общего доступа на URLот Google Maps Embed API .В этом случае у вас будет правильная ссылка на Google Maps Platform, и она должна работать как положено.Обратите внимание, что для использования Google Maps Embed API вам понадобится действительный ключ API.
Фрагмент кода:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <body> <iframe width="600" height="450" frameborder="0" style="border:0" src="https://www.google.com/maps/embed/v1/place?q=The+Westin+Turtle+Bay+Resort+%26+Spa%2C+Mauritius&key=AIzaSyDztlrk_3CnzGHo7CFvLFqE_2bUKEq1JEU" allowfullscreen></iframe> </body> </html>
Вы должны заменить мой ключ API своим.
Надеюсь, это поможет!