2016-10-28 12 views
2

GeoMap 컨트롤에 점을 그려야하는 SAPUI5 앱이 있습니다. HEREMaps를 공급자로 사용하는 한 잘 작동합니다. 그러나 회사에서 Google지도를 사용하기를 원합니다. GeoMap 컨트롤에서 Google지도를 사용하기 위해 MapProvider를 설정하는 방법에 대한 정보는 찾을 수 없습니다. 여기Google Maps with SAPUI5 GeoMap 컨트롤 사용 방법

는 (기본적으로) 내으로 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 설정 곳이다 : 사람이 사용하여 Google지도

  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는 어떻게 설정됩니까?

감사합니다.

+0

이 행할 .. 당신은 .. 컨트롤러에 답장을 보내 –

+0

감사 렌더링 onAfter지도 캔버스 및로드 맵에 대한 DOM을 가질 수 위의 한 .. 에 그것과 매우 유사. 네, 모두가 그 일을 할 수 있다고 생각하는 것 같습니다.하지만 아무도 URL이나 이름을 넣을 것을 모르는 것 같습니다. 세부 사항을 알고 있다면 공유 할 수 있습니까? 감사. – donkeyhotay

+0

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

답변

1

업데이트

그래서 나는 마침내이 문제를 마무리 할 수 ​​있어요. 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

고마워, 카스텐. 나는 기회가있을 때 그것을 시도 할 것이다. 도움에 감사드립니다! – donkeyhotay