首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SAPUI5 GeoMap控件中使用Google

如何在SAPUI5 GeoMap控件中使用Google
EN

Stack Overflow用户
提问于 2016-10-28 16:03:16
回答 1查看 5.2K关注 0票数 2

我有一个SAPUI5应用程序,需要在GeoMap控件上绘制点。只要我使用HEREMaps作为提供程序,它就能正常工作。然而,该公司希望我使用谷歌地图。我找不到任何关于如何为MapProvider控件设置GeoMap控件使用Google的信息。

下面是(本质上)我的GeoMap控件:

代码语言:javascript
复制
                <vk:content>
                    <vk:ContainerContent title="Map" icon="sap-icon://choropleth-chart">
                        <vk:content>
                            <vbm:GeoMap id="GeoMap" width="100%" height="100%">
                                <vbm:vos>
                                    <vbm:Spots 
                                        click="onClickItem" 
                                        contextMenu="onContextMenuItem" 
                                        id="caseTimeMapSpots" 
                                        items="{path: '/CaseEvents/results'}" 
                                        posChangeable="true" 
                                        scaleChangeable="true"
                                        >
                                        <vbm:items>
                                        <vbm:Spot 
                                            id="Spot"
                                            position="{Longitude};{Latitude};0" 
                                            tooltip="{EventName} - {path: 'EventDatetime', formatter: '.formatDate'} {path: 'EventDatetime', formatter: '.formatTime'}" 
                                            type="Warning"
                                            click="onClickSpot" 
                                            contextMenu="onContextMenuSpot" 
                                            text="{EventName}"
                                            scale="{path: 'DeleteInd', formatter: '.formatScale'}"
                                        />
                                        </vbm:items>
                                    </vbm:Spots>
                                </vbm:vos>
                            </vbm:GeoMap>
                        </vk:content>
                    </vk:ContainerContent>
                </vk:content>

下面是我在控制器中设置MapProvider的位置:

代码语言:javascript
复制
            var oGeoMap = this.getView().byId("GeoMap");
            var oMapConfig = {
                "MapProvider": [{
                    "name": "HEREMAPS",
                    "type": "",
                    "description": "",
                    "tileX": "256",
                    "tileY": "256",
                    "maxLOD": "20",
                    "copyright": "Tiles Courtesy of HERE Maps",
                    "Source": [
                        {
                        "id": "s1",
                        "url": "https://1.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/{LOD}/{X}/{Y}/256/png8?app_id=XXX"
                        },
                        {
                        "id": "s2",
                        "url": "https://2.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/{LOD}/{X}/{Y}/256/png8?app_id=XXX"
                        }
                    ]
                }],
                "MapLayerStacks": [{
                    "name": "DEFAULT",
                    "MapLayer": {
                        "name": "layer1",
                        "refMapProvider": "HEREMAPS",
                        "opacity": "1.0",
                        "colBkgnd": "RGB(255,255,255)"
                    }
                }]
            };
            oGeoMap.setMapConfiguration(oMapConfig);
            oGeoMap.setRefMapLayerStack("DEFAULT");
            oGeoMap.setInitialZoom(13);
            oGeoMap.setInitialPosition("-97.57;35.57;0");

有人用谷歌地图做过这种事吗?MapProvider是如何设置的?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 13:38:20

更新

所以我终于可以结束这件事了。有一种使用Tiles API直接访问googles映射块的官方方法。按照链接中的指南,您可以使用来自Tiles API的URL配置下面看到的MapConfig。

但是,如果没有付费计划,这个API是不可用的!(这个计划比JS的使用成本高出大约10倍),由于这个原因,我将不再跟进这个问题。

很抱歉,我还没有想出我想做的事情。下面的配置是执行此任务的最简化的版本。这里的要点是,您需要url直接获取地图块。使用X和Y指定tiles,并指定详细信息级别{LOD}。这些参数不必替换,但将在运行时由GeoMap控件设置。

--我还没有发布这篇文章的主要原因--是因为--尽管它是在技术层面上工作--我迄今所读到的一切都表明,直接访问这些瓷砖是违反Google的ToS的。因此,虽然它是工作的摆弄周围,我不会使用在一个生产环境!目前,我正试图找出一种方法来澄清许可中是否有允许使用的东西,或者我是否是SOL.

不幸的是,官方API没有提供一种请求特定地图块的方法。另一种解决这一问题的方法是查看SAP是否能够/确实提供不同的MapProvider实现。

代码语言:javascript
复制
var oMapConfig = {
        "MapProvider": [{
            "name": "GMAP",
            "Source": [{
            "id": "s1",
            "url": "https://mt.google.com/vt/x={X}&y={Y}&z={LOD}"
            }]
        }],
        "MapLayerStacks": [{
                "name": "DEFAULT",
                "MapLayer": {
                        "name": "layer1",
                        "refMapProvider": "GMAP",
                        "opacity": "1",
                        "colBkgnd": "RGB(255,255,255)"
                }
        }]
    };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40308969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档