2

GeoMap コントロールにスポットをプロットする必要がある SAPUI5 アプリがあります。HEREMaps をプロバイダーとして使用している限り、問題なく動作します。しかし、会社は私に Google マップを使ってほしいと言っています。Google マップを使用するために GeoMap コントロールの MapProvider を設定する方法に関する情報が見つかりません。

これが(本質的に)私のGeoMapコントロールです:

                <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 を設定します。

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

Google マップを使用してこれを行った人はいますか? MapProvider はどのように設定されていますか?

ありがとう。

4

1 に答える 1

2

アップデート

だから私は最終的にこれをまとめることができます。Tiles APIを使用して Google マップ タイルに直接アクセスする公式の方法があります。リンクのガイドに従って、Tiles API からの URL を使用して、以下に示す MapConfig を構成できます。

しかしこのAPIは有料プランでないと使えません!(ただし、このプランは JS API の使用の約 10 倍の費用がかかります) このため、これ以上フォローアップしません。


申し訳ありませんが、私はまだこれを私が望む範囲で理解していません。次の構成は、トリックを実行する最も簡素化されたバージョンです。ここでのポイントは、マップ タイルを直接取得するための URL が必要だということです。X と Y でタイルを指定し、{LOD} で詳細レベルを指定します。これらのパラメーターを置き換える必要はありませんが、実行時に GeoMap コントロールによって設定されます。

これをまだ投稿していない主な理由は、技術的なレベルで作業している間ですが、これまでに読んだすべてのことから、タイルに直接アクセスすることは Google マップの 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)"
                }
        }]
    };
于 2016-11-23T13:38:20.103 に答える