2015-11-29 2 views
1

Как использовать карту google с OpenLayers 3?
Я хочу, чтобы перейти от OpenLayers 2 до 3. вот пример: google map integration with openlayers example
, но с помощью этого метода нужно изменить старый HTML-код (два элемента потребности, «GMAP» и «olmap», что упомянутый пример) ,
Google Maps официально не поддерживается ol3, но мой вопрос:
«Как я могу использовать службу Tilt для Google Maps в своем проекте, таком как MapServer, без необходимости добавлять google api reference (для целей оптимизации) в тег скриптов?»Использование плиточной карты Google с OpenLayers 3

Вот мой старый код, который корректно работает с OpenLayers 2:

var map = new OpenLayers.Map("map_canvas", { 
    controls: [ 
     new OpenLayers.Control.PanZoomBar(), 
     new OpenLayers.Control.ScaleLine(), 
     new OpenLayers.Control.MousePosition(), 
     new OpenLayers.Control.OverviewMap() 
    ], 
    units: "m", 
    numZoomLevels: 21 
}); 
var gmap = new OpenLayers.Layer.Google(
    { type: google.maps.MapTypeId.ROADMAP, numZoomLevels: 21} 
); 
map.addLayers([gmap]); 

и HTML код:

<div id="map_canvas"> 
</div> 

признателен за любую помощь

+0

Вы не можете использовать плитки Google без API, что противоречит условиям использования (и из-за этого им сложно выполнять/поддерживать) – geocodezip

+0

так, как я могу использовать карту google в OpenLayers 3 без изменений старый html-код? – Pedram

+1

Что вы попробовали? Покажите нам свой код. – steenhulthin

ответ

10

Я нашел решение:

JsFiddle

var map = new ol.Map({ 
 
    target: 'map', 
 
    layers: [ 
 
    new ol.layer.Tile({ 
 
     source: new ol.source.OSM({ 
 
      url: 'http://mt{0-3}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', 
 
      attributions: [ 
 
       new ol.Attribution({ html: '© Google' }), 
 
       new ol.Attribution({ html: '<a href="https://developers.google.com/maps/terms">Terms of Use.</a>' }) 
 
      ] 
 
     }) 
 
    }) 
 
    ], 
 
    view: new ol.View({ 
 
    center: ol.proj.transform(
 
     [-110, 45], 'EPSG:4326', 'EPSG:3857'), 
 
    zoom: 3 
 
    }) 
 
});
html, body, #map { 
 
    padding: 0; 
 
    margin: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
}
<link href="http://openlayers.org/en/master/css/ol.css" rel="stylesheet"/> 
 
<script src="http://openlayers.org/en/master/build/ol.js"></script> 
 
<div id="map"></div>

, но я не уверен, что этот код, в отличие от Google Условия использования или нет.

+1

Блестящий. Как вы это поняли? –

+0

Я беспокоюсь, что в качестве недокументированной функции они могут вытащить ковер в будущем. С точки зрения Условий использования - я попытался прочитать рекомендации. Я не юрист, но его разные, если использовать спутниковые снимки, так как также необходимо добавить атрибуцию третьим сторонам. В соответствии с их рекомендациями вам нужно написать «Работает на Google» или «Данные карты © 2015 Google». См. [Здесь] (https://developers.google.com/maps/terms#section_9_4) и [здесь] (http://www.google.com/permissions/geoguidelines/attr-guide.html). Если у вас есть лицензия API, она может быть другой. –

+0

Неправильно использовать Google-плитки таким образом. См. Раздел 10.1a Условий использования (https://developers.google.com/maps/terms#section_10_1): «Например, вы не должны обращаться к фрагментам карт или изображениям через интерфейсы или каналы (включая недокументированные интерфейсы Google), другие чем API (ы) Карт ». – ahocevar

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