如何解决通过地理编码获取纬度和经度时,无法创建可拖动标记
因此,我需要通过使用地址中的纬度和经度来创建可拖动标记。为了从地址中获取经纬度,我做了以下功能:
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函数也存在问题,我注意到它没有超出标记。draggable= true;线。您可以看到示例代码here(我使用的是完全相同的代码,除了lat:-71.0636代替lat:42.35805的是lat:lati和lng:longit。
解决方法
我实现了您的代码段,以找出问题所在。
如果您为文本框使用oninput(),则它将为您键入的每个字母调用地址解析器。因此,地址解析器对这些不完整的单词没有任何响应。您可以通过放置if(result.items.length > 0)
进行测试。
如果您希望在用户输入时得到结果,则建议使用autosuggest API。
或者,仅当用户输入完整的字符串时,才使用提交按钮调用该函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。