我正在尝试从 Web 浏览器创建一个地理围栏,并创建了一个动态标记,该标记在越过时发出警报



以下代码位于两个不同的文件中,我从UI本身获取值,我保持层ID不变,如"1234"。

但是我收到以下错误 -TypeError: marker1.getPosition 不是函数

标记代码--

var marker1 =new H.map.Marker(center, {volatility: true});
var geofencing=platform.getGeofencingService();
map.addObject(marker1);
map.addEventListener("tap",ev=>{
var target =ev.target;
map.removeObject(marker1);
marker1 = new H.map.Marker(map.screenToGeo(ev.currentPointer.viewportX,ev.currentPointer.viewportY));
map.addObject(marker1);
geofencing.request(
H.service.extension.geofencing.Service.EntryPoint.SEARCH_PROXIMITY,
{
"layer_ids":["1234"],
"proximity":marker1.getPosition().lat + "," + marker1.getPosition().lng,
"key_attributes":["NAME"]
},
result=>{
alert("within the geofence");
},
error =>{
console.error(error);
}
);
});

地理围栏代码--

import {hereCredentials } from './Configurations.js';
import {platform,map} from './main.js';
document.getElementById("geofencesub").onclick=function geofence(){
var latitude=document.getElementById("lat").value;
var longitude=document.getElementById("lng").value;
var radius=document.getElementById("rad").value;
var lname =document.getElementById("lname").value
var circle = new H.map.Circle({lat: latitude, lng: longitude},radius);
map.addObject(circle);
var geo1 = circle.getGeometry();
var wkt = geo1.toString();
var zip = new JSZip();
zip.file("data.wkt","NAMEtWKTn"+"testfence"+"t"+wkt);
zip.generateAsync({type:"blob"}).then(content =>{
var formData= new FormData();
formData.append("zipfile",content);
axios.post("https://gfe.api.here.com/2/layers/upload.json",formData,{
headers:{
"content-type" : "multipart/form-data"
},
params:{
"app_id":hereCredentials.id,
"app_code":hereCredentials.code,
"layer_id":lname
}
}).then(result => {
console.log(result);
},error => {
console.error(error);
});
},error => {
console.error(error);
});
}

你得到错误"marker1.getPosition 不是一个函数">getPosition因为它确实不是 H.map.Marker 的函数。

请尝试marker1.getGeometry()

函数 getGeomery 是用来获取标记位置的函数。

我遇到了同样的问题,似乎 HERE 地图曾经在早期版本中具有marker.getPosition()的功能,但在最新版本中将其更改为marker.getGeometry().

您可以尝试使用console.log(marker.getGeometry())查看响应。

最新更新