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

i am trying to create a geofence from the web browser and created a dynamic marker which gives an alert when crossed

以下代码在两个不同的文件中,我从 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","NAME\tWKT\n"+"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 is not a function" 因为 getPosition 确实不是 H.map.Marker.

的函数

试试 marker1.getGeometry()

函数getGeomery是为了获取标记位置而使用的函数。

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

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