2016-10-28 5 views
2

GeoMapコントロールにスポットを描画する必要があるSAPUI5アプリがあります。 HEREMapsをプロバイダとして使用している限り、正常に動作します。しかし、私はGoogle Mapsを使用したいと考えています。 GeoMapコントロールでGoogleマップを使用するためのMapProviderの設定方法に関する情報はありません。ここでGoogle Maps with SAPUI5 GeoMapコントロールの使用方法

は(基本的に)私のジオコントロールです:私は私のコントローラでMapProviderを設定する場所

   <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> 

そして、ここでは、次のとおりです。

  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はどのように設定されていますか?

ありがとうございました。

+0

これはなんとかです..あなたが..コントローラに返信用 –

+0

感謝をレンダリングonAfterマップキャンバスとロードマップのためのDOMを持つことができ、上記1。.. への非常に似ています。はい、誰もがそれが実行可能だと思っているようですが、誰もURLまたは名前のために何を入れるべきか分からないようです。詳細を知ることができれば、それらを共有できますか?ありがとう。 – donkeyhotay

+0

http://jasper07.secondphase.com.au/openui5-googlemaps/ –

答えて

1

更新

だから私はfinalyこれをラップすることができています。 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)" 
       } 
     }] 
    }; 
+0

ああ。更新していただきありがとうございます。ええ、それがToSに違反しているなら、それは生産のためには不可能でしょう。私は以来、私のアプリで働くためにopenui5 googlemapsライブラリを手に入れました。そして、私はそのライブラリが私たちの目的を果たしていると思います。私はあなたのコードを共有していただきありがとうございます。 – donkeyhotay

+0

ちょっとフォローアップし、ToSに違反しない方法でGoogleマップを設定する方法で答えを更新しました。質問を解決する場合は、回答を受け入れてください。 – Carsten

+0

ありがとう、Carsten。私はチャンスがあるときに試してみます。私は助けに感謝します! – donkeyhotay

関連する問題