最近做了一个web平台,其中有一个地图服务的模块,包含了一些常见的地图操作和轨迹功能,经讨论最终选择了openlayers4作为地图引擎,这里将开发过程中遇到的问题和解决方案贴出来供大家参考,小弟第一次写博客,有写的不对的地方请指正。
// 创建百度地图的数据源
function createBaiduSource(isSatellite) {
// 自定义分辨率和瓦片坐标系
var resolutions = [],
maxZoom = 18;
// 计算百度使用的分辨率
for (var i = 0; i <= maxZoom; i++) {
resolutions[i] = Math.pow(2, maxZoom - i);
}
var tilegrid = new ol.tilegrid.TileGrid({
origin: [0, 0], // 设置原点坐标
resolutions: resolutions // 设置分辨率
});
return new ol.source.TileImage({
projection: 'EPSG:3857',
tileGrid: tilegrid,
tileUrlFunction: function(tileCoord, pixelRatio, proj) {
var z = tileCoord[0],
x = tileCoord[1],
y = tileCoord[2];
// 百度瓦片服务url将负数使用M前缀来标识
if (x < 0) {
x = 'M' + (-x);
}
if (y < 0) {
y = 'M' + (-y);
}
<