2017-01-26 15 views
0

Я хочу добавить слой карты google в элемент управления Esri BaseMapGallery. Все шло хорошо, пока я не обновил веб-приложение, чтобы использовать последний API 3.19 ArcGIS JS. После этого BaseMapGallery не изменяет карту на любой из слоев Google. На консоли нет ошибок.Добавление слоя карты google в BaseMapGallery ArcGIS JS API 3.19

Вы можете посмотреть демо я создал ее: https://jsbin.com/denoduquzi/edit?html,output

Если я просто понизить Esri API версии 3.17 он будет работать нормально, но это не удается при обновлении до 3.18 или 3.19

<title>Basemap gallery</title> 
    <link rel="stylesheet" href="https://js.arcgis.com/3.19/dijit/themes/claro/claro.css">  
    <link rel="stylesheet" href="https://js.arcgis.com/3.19/esri/css/esri.css"> 
    <style> 
    html, body { height: 100%; width: 100%; margin: 0; padding: 0; } 
    #map{ 
     padding:0; 
    } 
    </style> 
    <script> 
    var djConfig = { 
     async: true, 
     packages: [ 
      { name: "agsjs", location: "https://maps.ngdc.noaa.gov/viewers/dijits/agsjs/xbuild/agsjs" } 
     ] 
    }; 
    </script> 
    <script src="https://js.arcgis.com/3.19/"></script> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script> 
    var map; 
    require([ 
     "esri/map", "esri/dijit/BasemapGallery", "esri/arcgis/utils", 
     "dojo/parser", 

     "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/TitlePane","agsjs/layers/GoogleMapsLayer", 
     "dojo/domReady!" 
    ], function(
     Map, BasemapGallery, arcgisUtils, 
     parser 
    ) { 
     parser.parse(); 

     map = new Map("map", { 
     basemap: "topo", 
     center: [-105.255, 40.022], 
     zoom: 13 
     }); 

     //add the basemap gallery, in this case we'll display maps from ArcGIS.com including bing maps 
     var basemapGallery = new BasemapGallery({ 
     showArcGISBasemaps: true, 
     toggleReference: true, 
     google: { 
      apiOptions: { 
      v: '3.6' 
      } 
     }, 
     map: map 
     }, "basemapGallery"); 
     basemapGallery.startup(); 

     basemapGallery.on("error", function(msg) { 
     console.log("basemap gallery error: ", msg); 
     }); 
    }); 
    </script> 


    <div data-dojo-type="dijit/layout/BorderContainer" 
     data-dojo-props="design:'headline', gutters:false" 
     style="width:100%;height:100%;margin:0;"> 

    <div id="map" 
     data-dojo-type="dijit/layout/ContentPane" 
     data-dojo-props="region:'center'" 
     style="padding:0;"> 

     <div style="position:absolute; right:20px; top:10px; z-Index:999;"> 
     <div data-dojo-type="dijit/TitlePane" 
      data-dojo-props="title:'Switch Basemap', closable:false, open:false"> 
      <div data-dojo-type="dijit/layout/ContentPane" style="width:380px; height:280px; overflow:auto;"> 
      <div id="basemapGallery"></div> 
      </div> 
     </div> 
     </div> 

    </div> 
    </div> 

ответ

1

Я чувствовал, что должен упомянуть об этом. Я думаю, что это не разрешено потреблять контент Google Maps API, от сторонних производителей ->Google Maps Terms of Use (section 10.1):

Нет доступа к API, или Контента, кроме как через службы. Вы не будете обращаться к API (-ам) Карт или к Контенту, кроме Сервиса. Например, вы не должны получать доступ к картам или изображениям через интерфейсы или каналы (включая недокументированные интерфейсы Google), кроме API (-ов) Карт.

Кроме того, технически нет никаких проблем делать это следующим образом:

//Adding Google Imagery Basemap 
var mapGMapSat = new Basemap({ 
    layers: [new BasemapLayer({ 
    type: "WebTiledLayer", 
    url : "https://mts1.google.com/vt/[email protected]&hl=x-local&src=app&x={col}&y={row}&z={level}&s=Galile", 
    copyright: "Google Maps" 
    })], 
    id: "gmapsat", 
    thumbnailUrl: "https://maps.ngdc.noaa.gov/viewers/dijits/agsjs/xbuild/agsjs/dijit/images/googlehybrid.png", 
    title: "Google Imagery" 
}); 
basemapGallery.add(mapGMapSat); 

As you can see here: https://jsbin.com/rabacoq

+0

Большое спасибо @hhkaos. –

+0

Добро пожаловать;) – hhkaos

+0

Какой замечательный ответ! пальцы вверх . @MohamedMouselhie вы должны принять его как ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^