如何在Googlemaps上使用Visual Business GeoMap?

时间:2016-08-18 08:09:49

标签: google-maps sapui5 sap-fiori geomap

我想在Google地图中添加GeoMap Spot和Legend

My.view.xml:

        <l:FixFlex>
            <l:flexContent>
                <vk:MapContainer autoAdjustHeight="true">
                    <vk:content>
                        <vk:ContainerContent titile="test">
                            <vk:content>

                                <vbm:AnalyticMap id="map"></vbm:AnalyticMap>

                            </vk:content>
                        </vk:ContainerContent>
                    </vk:content>
                </vk:MapContainer>
            </l:flexContent>
        </l:FixFlex>

My.controller.js

    var mapDom = this.getView().byId("map").getDomRef();
    onAferRendering: function() {
       jQuery.sap.includeScript(
         "https://maps.googleapis.com/maps/api/js?key=XXX",
         null,
         function() {
           ...
           mainmap =new google.maps.Map(mapDom, mapProp);
    }
}

这很有效,Googlemap已成功添加。

但是当我在AnalyticMap中添加Spot时,googlemaps就消失了。只有AnalyticMap和Spots显示。

<l:FixFlex>
    <l:flexContent>
        <vk:MapContainer autoAdjustHeight="true">
            <vk:content>
                <vk:ContainerContent titile="test">
                    <vk:content>
                        <vbm:AnalyticMap id="map">
                            <vbm:vos>
                                <vbm:Spots items="{/Spots}" click="onClickItem" contextMenu="onContextMenuItem">
                                    <vbm:Spot position="{pos}" tooltip="{tooltip}" type="{type}" text="{text}" click="onClickSpot" contextMenu="onContextMenuSpot" />
                               </vbm:Spots>                                 
                            </vbm:vos>
                        </vbm:AnalyticMap>                      
                    </vk:content>
                </vk:ContainerContent>
            </vk:content>
        </vk:MapContainer>
    </l:flexContent>
</l:FixFlex>

我在Explored

中使用了demo

如何将这两者结合起来?我可以在Google地图中使用这两个标记并在GeoMap中使用这些标记吗?

我只考虑使用标记,但我不能在标记上写数据(只有标记可以写标记),而且我还需要GeoMap中的Legend。

3 个答案:

答案 0 :(得分:1)

我做了类似的事情。这是我在控制器中使用的特定代码,用于将HEREMAPS设置为地图提供者。

            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");

上面的XXX是您放置HereMaps许可证代码的地方。

我也宁愿使用Googlemaps,但我也无法找到如何为MapProvider构建网址。

答案 1 :(得分:0)

看来你把两张地图放在彼此的顶部。这听起来不像是成功的秘诀。你甚至可能忽略了工件的可见性,因为它们彼此叠加的顺序决定了什么是可见的,什么不是。

如果您对GeoMap控件(MapQuest)的默认地图提供程序不满意,您可以随时将其更改为其他提供程序,包括Google。这是使用mapConfiguration属性完成的,如下所示:

https://sapui5.hana.ondemand.com/docs/api/symbols/sap.ui.vbm.GeoMap.html#setMapConfiguration

如果您将Google配置为地图提供商,则可以在Google地图上使用GeoMap的所有常用功能,我认为这就是您所寻找的。

您不能在同一地图中同时使用Google标记和Geomap点。但是,您可以自定义Geomap斑点的样子,使它们看起来更像Google标记。

答案 2 :(得分:0)

根据Map Provider Configuration Changes

  

要访问SAP内部的地图,地图提供者必须满足这两个要求

     
      
  • 必须支持XYZ或四键界面。这是地图图块的标准界面。
  •   
  • 可以通过REST Web服务检索地图图块。   提供商包括Bing,HERE(以前称为Nokia),ALK,PTV等。所有人都有可以购买合同的网站。
  •   

GoogleMaps似乎不是GeoMap可用的地图提供商之一。


但是,如果您只想在UI5中使用GoogleMaps,则不是必须使用GeoMap。 只需在视图中添加地图tableContainer

div