簡體   English   中英

通過地理編碼獲取緯度和經度時無法創建可拖動標記

[英]Not being able to create a Draggable Marker when getting latitude and longitude by geocoding

因此,我需要通過使用地址中的緯度和對數來創建可拖動標記。 為了從地址中獲取 lat 和 lng,我執行了以下功能:

var longit;
var lati;

function searchGeocoding() {
  map.removeObjects(map.getObjects());
  let search;
  search = document.getElementById("myText").value;
  service.geocode(
    {
      q: search,
    },
    (result) => {
      result.items.forEach((item) => {
        map.setCenter(item.position);
        map.setZoom(16);
        lati = item.position.lat;
        longit = item.position.lng;
        addDraggableMarker(map, behavior);
      });
    },
    alert
  );
}

哪個工作正常。 但是,當我嘗試使用 Here API Docs 中的示例創建可拖動標記時,出現以下錯誤:

mapsjs-core.js:43 Uncaught InvalidArgumentError: H.map.AbstractMarker#setGeometry (Argument #0 undefined)
    at new D (https://js.api.here.com/v3/3.1/mapsjs-core.js:43:977)
    at Xf (https://js.api.here.com/v3/3.1/mapsjs-core.js:89:407)
    at on.ai.ba (https://js.api.here.com/v3/3.1/mapsjs-core.js:177:548)
    at on.ai [as constructor] (https://js.api.here.com/v3/3.1/mapsjs-core.js:177:309)
    at new on (https://js.api.here.com/v3/3.1/mapsjs-core.js:395:290)
    at addDraggableMarker (http://127.0.0.1:5500/js/test.js:32:16)
    at http://127.0.0.1:5500/js/test.js:21:9
    at Array.forEach (<anonymous>)
    at http://127.0.0.1:5500/js/test.js:14:20
    at e.f (https://js.api.here.com/v3/3.1/mapsjs-core.js:31:102)

addDraggableMarker 函數也有一個問題,我注意到它沒有越過marker.draggable = true; 線。 您可以在此處查看示例代碼(我使用的是完全相同的代碼,除了 lat:42.35805,lng:-71.0636 是 lat: lati 和 lng: longit。

我實現了您的代碼段以找出問題所在。 如果您對文本框使用 oninput(),它會為您輸入的每個字母調用地理編碼器。 因此,地理編碼器對那些不完整的詞沒有反應。 您可以通過放置if(result.items.length > 0)來測試這一點。 如果您希望在用戶鍵入時獲得結果,則建議使用 autosuggest API。 或者您使用提交按鈕僅在用戶輸入完整字符串時調用該函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM