uni-app引入高德地图后,用同样的点坐标和线坐标绘制但地图上显示点和线位置不一致
uni-app引入高德地图后,用同样的点坐标和线坐标绘制但地图上显示点和线位置不一致
测试过的手机:
HarmonyOS 3.0.0
示例代码:
<template>
<map
id="map"
class="map-style"
style="{ height: '100%', width: '100%' }"
theme="'satellite'"
enable-satellite="true"
scale="scale"
latitude="latitude"
longitude="longitude"
markers="markers"
>
</map>
</template>
<script setup>
const props = defineProps({
scale: { type: Number, default: 16 },
latitude: {
type: Number,
default: 0,
},
longitude: {
type: Number,
default: 0,
},
markers: {
type: Array,
default: [],
},
})
</script>
操作步骤:
点的数组:
[
{
"latitude": 25.123306,
"longitude": 102.741492,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123306,
"longitude": 102.741492,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123306,
"longitude": 102.741492,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123302,
"longitude": 102.74149,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123302,
"longitude": 102.74149,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123317,
"longitude": 102.741487,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123317,
"longitude": 102.741487,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123317,
"longitude": 102.741487,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123356,
"longitude": 102.741338,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123356,
"longitude": 102.741338,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123356,
"longitude": 102.741338,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
},
{
"latitude": 25.123348,
"longitude": 102.741334,
"iconPath": "/assets/point.06710a56.png",
"width": 5,
"height": 5
}
]
线的数组:
```json
[
{
"points": [
{
"latitude": 25.123306,
"longitude": 102.741492
},
{
"latitude": 25.123306,
"longitude": 102.741492
},
{
"latitude": 25.123306,
"longitude": 102.741492
},
{
"latitude": 25.123302,
"longitude": 102.74149
},
{
"latitude": 25.123302,
"longitude": 102.74149
},
{
"latitude": 25.123317,
"longitude": 102.741487
},
{
"latitude": 25.123317,
"longitude": 102.741487
},
{
"latitude": 25.123317,
"longitude": 102.741487
},
{
"latitude": 25.123356,
"longitude": 102.741338
},
{
"latitude": 25.123356,
"longitude": 102.741338
},
{
"latitude": 25.123356,
"longitude": 102.741338
},
{
"latitude": 25.123348,
"longitude": 102.741334
}
],
"color": "#000",
"width": 10
}
]
预期结果:
点和线的端点在一起
实际结果:
隔得有距离。如上图所示
1 回复
在uni-app中引入高德地图后,如果遇到点和线位置不一致的问题,通常可能是由于坐标系统的不匹配、API使用不当或数据传递错误引起的。以下是一个示例代码,展示了如何在uni-app中正确使用高德地图API绘制点和线,确保它们的显示位置一致。
首先,确保你已经在uni-app项目中正确引入了高德地图SDK,并在manifest.json
中配置了相关权限和key。
1. 安装高德地图SDK
如果尚未安装,可以通过npm安装高德地图的JavaScript API(虽然通常是在HTML中通过script标签引入,但在uni-app中,你可以通过条件编译来引入):
# 实际上这一步在uni-app中不常见,通常是通过HTML script标签引入高德地图SDK
# npm install @amap/amap-jsapi-loader --save
2. 在页面中引入高德地图
在需要使用高德地图的页面中,通过<script>
标签引入高德地图SDK(注意条件编译):
<!-- #ifdef H5 -->
<script src="https://webapi.amap.com/maps?v=2.0&key=你的高德地图Key"></script>
<!-- #endif -->
3. 绘制点和线
以下是一个在uni-app页面中使用高德地图API绘制点和线的示例代码:
export default {
data() {
return {
map: null,
marker: null,
polyline: null,
};
},
mounted() {
this.initMap();
},
methods: {
initMap() {
// 初始化地图
this.map = new AMap.Map('container', {
resizeEnable: true,
zoom: 10,
center: [116.397428, 39.90923], // 北京的中心点
});
// 添加点
this.marker = new AMap.Marker({
position: new AMap.LngLat(116.397428, 39.90923),
map: this.map,
});
// 添加线
const path = [
new AMap.LngLat(116.397428, 39.90923),
new AMap.LngLat(116.406428, 39.90023),
];
this.polyline = new AMap.Polyline({
path: path,
strokeColor: "#FF33FF", //线颜色
strokeOpacity: 1, //线透明度
strokeWeight: 3, //线宽
strokeStyle: "solid", //线样式
map: this.map,
});
},
},
};
确保你的页面模板中有一个id为container
的div元素作为地图容器。
4. 检查坐标
确保你使用的点坐标和线坐标是同一坐标系(如WGS84)。如果数据源使用的是其他坐标系(如GCJ02),则需要在绘制前进行转换。
通过上述代码,你应该能够在uni-app中正确绘制点和线,并确保它们的位置一致。如果问题依旧存在,请检查数据传递和坐标转换是否正确。