如何定义图块提供者 (H.map.provider.TileProvider)?
How to define tile provider (H.map.provider.TileProvider)?
我正在尝试获取边界框中的图块以将它们传递给 PDE。我正在使用以下代码,但我不确定如何定义 H.map.provider.TileProvider.
// I don't know how to define the tileProvider (this is what I have for now)
var tileProvider = new H.map.provider.TileProvider({
min: 12,
max: 15,
});
var overlayLayer = new H.map.layer.TileLayer(tileProvider, {
// Let's make it semi-transparent
opacity: 0.5
})
var boundingBox = new
H.geo.Rect(map.getViewBounds().getTop(),map.getViewBounds().getLeft(),map.getVi
ewBounds().getBottom(),map.getViewBounds().getRight());
var zoomLevel=14;
var cacheOnly=false;
var prioCenter=new H.math.Point(42.36099070901032,-71.09613451879883);
overlayLayer.requestTiles(boundingBox, zoomLevel, cacheOnly, prioCenter)
你能告诉我如何定义 TileProvider 吗?
谢谢
您不能创建 TileProvider 的实例,因为它是一个抽象 class。您可以创建其子项的实例(ImageTileProvider、MarkerTileProvider 等,请参阅开发人员站点中的文档)。
示例:
// Create your own LocalObjectProvider and add some hierarchical objects:
myProvider = new H.map.provider.LocalObjectProvider();
myMap.addLayer(new H.map.layer.ObjectLayer(myProvider));
我知道这个问题已经有一年了,但答案可能会对其他人有所帮助:
(function (map) {
tileProvider = new H.map.provider.ImageTileProvider({
min: 5, //min zoom factor
max: 12, //max zoom factor
定义一个带有 3 个参数的 getURL 函数:
getURL: function (column, row, zoom) {
这里你应该 return 一个 url 包含瓷砖。您可以通过 API 甚至本地获取它。最后传递 3 个因素:zoom / col / row .. 或者你的图像是如何被调用的
在下一个示例中,图像存储在以缩放数字和图像命名的文件夹中,例如:12-16.png
return `.../${zoom}/${column}-${row}.png`;
}
});
请注意,如果您从外部提供商处获取磁贴图像
您应该使用版权方法确认提供者:
tileProvider.getCopyrights = function (bounds, level) {
return [{
label: "© ....", // this will appear under the map
alt: "© ...."
}];
};
然后定义一个包含图块的图层。
var overlayLayer = new H.map.layer.TileLayer(tileProvider);
将图层添加到地图(我假设您已经初始化了地图)
map.addLayer(overlayLayer);
})(map);
(function(map) {
tileProvider = new H.map.provider.ImageTileProvider({
min: 5,
max: 12,
getURL: (column, row, zoom) =>
`${site_url}/images-folder/tiles-folder/${zoom}/${column}_${row}.png`,
});
tileProvider.getCopyrights = (bounds, level) => {
return [{
label: "©...",
alt: "©..."
}];
};
let overlayLayer = new H.map.layer.TileLayer(tileProvider);
map.addLayer(overlayLayer);
})(map);
我正在尝试获取边界框中的图块以将它们传递给 PDE。我正在使用以下代码,但我不确定如何定义 H.map.provider.TileProvider.
// I don't know how to define the tileProvider (this is what I have for now)
var tileProvider = new H.map.provider.TileProvider({
min: 12,
max: 15,
});
var overlayLayer = new H.map.layer.TileLayer(tileProvider, {
// Let's make it semi-transparent
opacity: 0.5
})
var boundingBox = new
H.geo.Rect(map.getViewBounds().getTop(),map.getViewBounds().getLeft(),map.getVi
ewBounds().getBottom(),map.getViewBounds().getRight());
var zoomLevel=14;
var cacheOnly=false;
var prioCenter=new H.math.Point(42.36099070901032,-71.09613451879883);
overlayLayer.requestTiles(boundingBox, zoomLevel, cacheOnly, prioCenter)
你能告诉我如何定义 TileProvider 吗?
谢谢
您不能创建 TileProvider 的实例,因为它是一个抽象 class。您可以创建其子项的实例(ImageTileProvider、MarkerTileProvider 等,请参阅开发人员站点中的文档)。
示例:
// Create your own LocalObjectProvider and add some hierarchical objects:
myProvider = new H.map.provider.LocalObjectProvider();
myMap.addLayer(new H.map.layer.ObjectLayer(myProvider));
我知道这个问题已经有一年了,但答案可能会对其他人有所帮助:
(function (map) {
tileProvider = new H.map.provider.ImageTileProvider({
min: 5, //min zoom factor
max: 12, //max zoom factor
定义一个带有 3 个参数的 getURL 函数:
getURL: function (column, row, zoom) {
这里你应该 return 一个 url 包含瓷砖。您可以通过 API 甚至本地获取它。最后传递 3 个因素:zoom / col / row .. 或者你的图像是如何被调用的
在下一个示例中,图像存储在以缩放数字和图像命名的文件夹中,例如:12-16.png
return `.../${zoom}/${column}-${row}.png`;
}
});
请注意,如果您从外部提供商处获取磁贴图像 您应该使用版权方法确认提供者:
tileProvider.getCopyrights = function (bounds, level) {
return [{
label: "© ....", // this will appear under the map
alt: "© ...."
}];
};
然后定义一个包含图块的图层。
var overlayLayer = new H.map.layer.TileLayer(tileProvider);
将图层添加到地图(我假设您已经初始化了地图)
map.addLayer(overlayLayer);
})(map);
(function(map) {
tileProvider = new H.map.provider.ImageTileProvider({
min: 5,
max: 12,
getURL: (column, row, zoom) =>
`${site_url}/images-folder/tiles-folder/${zoom}/${column}_${row}.png`,
});
tileProvider.getCopyrights = (bounds, level) => {
return [{
label: "©...",
alt: "©..."
}];
};
let overlayLayer = new H.map.layer.TileLayer(tileProvider);
map.addLayer(overlayLayer);
})(map);