如何将特定国家/地区的地图加载到OpenStreetMap中?

时间:2018-09-28 07:20:42

标签: javascript openlayers openstreetmap

我想加载特定国家/地区的地图(例如https://openstreetmap.in)。我正在使用以下代码段,但它是从https://www.openstreetmap.org加载地图的:

layers: [
    new ol.layer.Tile({
        source: new ol.source.OSM()
    })
]

有人可以告诉我如何加载特定国家/地区的地图吗?

1 个答案:

答案 0 :(得分:2)

您需要创建一个自定义切片图层,即所谓的OSM图层或XYZ图层。 OpenLayer示例Localized OpenStreetMapXYZ说明了如何指定自定义图块源。

openstreetmap.in的切片服务器URL为https://{a-c}.tiles.mapbox.com/v4/openstreetmap.1b68f018/{z}/{x}/{y}@2x.png?access_token=pk.eyJ1IjoiamluYWxmb2ZsaWEiLCJhIjoiY2psejFtZG8wMWhnMjNwcGFqdTNjaGF2MCJ9.ZQVAZAw8Xtg4H2YSuG4PlA

您的代码应大致如下所示:

var osmIndia = new TileLayer({
  source: new OSM({
    attributions: [
      '© <a href="https://www.mapbox.com/">mapbox</a> and <a href="https://www.openstreetmap.org/">OpenStreetMap</a>'
    ],
    url: 'https://{a-c}.tiles.mapbox.com/v4/openstreetmap.1b68f018/{z}/{x}/{y}@2x.png?access_token=pk.eyJ1IjoiamluYWxmb2ZsaWEiLCJhIjoiY2psejFtZG8wMWhnMjNwcGFqdTNjaGF2MCJ9.ZQVAZAw8Xtg4H2YSuG4PlA'
  })
});

[...]

layers: [
    osmIndia
]