Google maps 如何将Google地图与SAPUI5 GeoMap控件结合使用
我有一个SAPUI5应用程序,需要在GeoMap控件上绘制点。只要我使用HEREMaps作为提供者,它就可以正常工作。然而,公司希望我使用谷歌地图。我找不到任何关于如何为GeoMap控件设置MapProvider以使用Google Maps的信息 以下是(基本上)我的GeoMap控件:Google maps 如何将Google地图与SAPUI5 GeoMap控件结合使用,google-maps,sapui5,sap-fiori,geomap,Google Maps,Sapui5,Sap Fiori,Geomap,我有一个SAPUI5应用程序,需要在GeoMap控件上绘制点。只要我使用HEREMaps作为提供者,它就可以正常工作。然而,公司希望我使用谷歌地图。我找不到任何关于如何为GeoMap控件设置MapProvider以使用Google Maps的信息 以下是(基本上)我的GeoMap控件: <vk:content> <vk:ContainerContent title="Map" icon="sap-icon:
<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是如何设置的
谢谢。更新 所以我终于可以结束了。有一种官方的方式可以直接使用谷歌地图。 按照链接中的指南,您可以使用Tiles API中的URL配置下面的MapConfig 但是如果没有付费计划,这个API是不可用的!(这个计划的运行成本大约是JSAPI使用成本的10倍)因此,我将不再继续跟进
很抱歉,我还没有把这个问题解决到我想要的程度。下面的配置是实现此功能的最精简版本。这里的要点是,您需要url来直接获取地图分幅。用X和Y指定瓷砖和{LOD}详细程度。这些参数不必替换,但将在运行时由GeoMap控件设置 我还没有发布这篇文章的主要原因是——虽然它在技术层面上起作用——到目前为止,我读到的所有内容都表明,直接访问这些贴片是违反谷歌地图的ToS的。所以,虽然它是用来摆弄的,但我不会在生产环境中使用它!目前,我正在设法澄清许可证中是否有允许此使用的内容,或者我是否是SOL。 遗憾的是,官方API没有提供请求特定地图分幅的方法。另一种解决方法是查看SAP是否可以/确实提供不同的MapProvider实现
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)"
}
}]
};
这是可行的。。它与上面的很相似。。您可以将dom用于贴图画布,并在控制器中渲染后加载贴图。谢谢您的回复。是的,每个人似乎都认为这是可行的,但似乎没有人知道该为URL或名称输入什么。如果你知道细节,你能分享吗?谢谢。刚刚开始工作,一旦我完全弄明白了,就会用答案更新,可以提供一个很好的参考。谢谢,卡斯滕。我期待着听到这个消息。谢谢你的更新。是的,如果它是反对ToS的,它的生产将是不确定的。我已经让openui5 googlemaps库在我的应用程序中运行,我认为该库现在可以满足我们的目的。我很感谢你分享代码。嘿,只是做了一点跟进,并更新了答案,以一种不违反ToS的方式配置谷歌地图。如果答案能解决问题,也请接受。谢谢,卡斯滕。有机会的话我会试试的。我感谢你的帮助!卡斯滕,我今天试着用你的代码,效果很好。非常感谢您的分享。我已将你的回答标记为回答,我希望能送你一瓶苏格兰威士忌;-)
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)"
}
}]
};