android - 谷歌地图不显示所有地方
问题描述
我将谷歌地图集成到我的应用程序中。但有些地方并没有显示出来。我认为事实是地图没有显示购物中心内的商店等。我检查了凭据,但一切都已启用。我以为问题出在这种方法中 mGoogleMap.setIndoorEnabled()
,但是当我设置该值时,true
我没有得到任何效果。
附上 2 个屏幕截图(在网络浏览器中一切正常,也在 ios 应用程序中与谷歌地图一切正常):
可能是什么问题呢?
解决方案
IndeedGoogleMap
对象默认不显示所有地点。似乎您应该使用Google Places API中的Place Search并通过附近的 URL 请求获取兴趣点列表:
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LAT_LNG_e_g_ 32.944552,-97.129767>&types=point_of_interest&radius=<RADIUS_IN_METERS>&sensor=false&key=<YOUR_APP_KEY>
解析它并以编程方式在地图上显示所需的位置。
注意!附近的 URL 请求仅返回 20 个位置,要加载更多数据,您应该使用next_page_token
响应标记中的字符串值并通过pagetoken
参数将其传递给下一个请求:
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=<LAT_LNG_e_g_ 32.944552,-97.129767>&types=point_of_interest&radius=<RADIUS_IN_METERS>&sensor=false&key=<YOUR_APP_KEY>&pagetoken=<TOKEN_FOR_NEXT_PAGE_FROM_next_page_token_TAG_OF_RESPONSE>
在添加 POI 标记之前,您可能需要隐藏“标准”标记,例如Jozef的这个答案:
您可以简单地通过修改地图样式来做到这一点:添加样式地图
- 像这样创建 JSON 文件src\main\res\raw\map_style.json:
[ { featureType: "poi", elementType: "labels", stylers: [ { visibility: "off" } ] } ]
- 将地图样式添加到您的
GoogleMap
googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));
并且不要忘记从Console为您的应用程序启用 Places API 。
或者,您可以做到这一点:使用 simpleWebView
代替MapFragment
并在必要的地方打开它:
WebView webview = (WebView) findViewById(R.id.web_view);
webview.setWebViewClient(new WebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://maps.google.com/maps?q=32.944552,-97.129767&z=20");
WebView
显示与网络浏览器相同的兴趣点。
推荐阅读
- mongodb - mongodb 聚合并使用 $group 来求和并取出所有数据
- python - LSTM,Keras:推理模型应该有多少层?
- c# - 大字节数组 - 在字节数组中存储长度有什么好处?
- java - postgres序列不递增
- postgresql - 将 postgresql 部署到 kubenetes
- javascript - 在 Heroku 上将应用程序投入生产后,Express 路线停止工作
- docker - 如何以最佳方式在多台物理机上部署 Kubernetes 集群?
- javascript - 如何将异步等待响应传递给 Vue?
- excel - 仅查找一列的所有选项
- postgresql - 将包含范围的行拆分为两个边界