я пытаюсь создать геозону из веб-браузера и создал динамический маркер c, который выдает предупреждение при пересечении - PullRequest
3 голосов
/ 17 января 2020

Следующие коды находятся в двух разных файлах, и я беру значения из самого интерфейса. Я сохраняю постоянный идентификатор слоя, например, «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);
   });
}

Ответы [ 2 ]

1 голос
/ 18 января 2020

Я столкнулся с той же проблемой, похоже, ЗДЕСЬ карты раньше имели функцию marker.getPosition() в своей более ранней версии, но изменили ее в последней версии на marker.getGeometry().

Вы можете попытаться увидеть ответ с использованием console.log(marker.getGeometry()).

1 голос
/ 17 января 2020

Вы получаете ошибку "marker1.getPosition не является функцией" , потому что getPosition действительно не является функцией H.map.Marker .

Вместо этого попробуйте marker1.getGeometry().

Функция getGeomery - это используемая функция для определения местоположения маркера.

...