1,Point:point类用于表示地图上的像素坐标(屏幕坐标),所以传入参数也是像素坐标:new maptalks.point(100,100)
2,Coordinate:coordinate类用于表示地图上的地理坐标,常用经纬度表示,所以传入参数也是经纬度坐标:new maptalks.coordinate(经度,纬度)
3,Projection.unproject方法:将像素坐标(或投影坐标)转换为地理坐标,所以传入需是point像素坐标。
4,Projection.project方法:用于将地理坐标转换为投影坐标,所以需要传入的是地理坐标。
5,registerMode时,creat传入的参数是投影坐标(projection)和一个点数组(prjCoord);但是绘制类LineString、Marker等时需要传入的是地理坐标,所以此时需要上述方法;prjCoord也是投影坐标
用法示例:
// 初始化地图
const map = new maptalks.Map('map', {
center: [121.473701, 31.230416],
zoom: 13,
baseLayer: new maptalks.TileLayer('base', {
urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
subdomains: ['a', 'b', 'c']
})
});
// 使用 containerPointToCoordinate 将容器坐标转换为地理坐标
map.on('click', function (event) {
const containerPoint = event.containerPoint;
const coordinate = map.containerPointToCoordinate(containerPoint);
console.log('Container Point:', containerPoint);
console.log('Converted Coordinate:', coordinate);
});
// 使用 projection.unproject 将投影坐标转换为地理坐标
const projection = map.getProjection();
const projectedPoint = new maptalks.Point(20037508.34, 20037508.34); // Web Mercator 坐标
const geographicCoordinate = projection.unproject(projectedPoint);
console.log('Projected Point:', projectedPoint);
console.log('Geographic Coordinate:', geographicCoordinate);