Javascript 通过地理编码获取纬度和经度时无法创建可拖动标记
所以,我需要使用地址中的纬度和逻辑度来创建一个可拖动的标记。为了从地址获取lat和lng,我执行了以下功能:Javascript 通过地理编码获取纬度和经度时无法创建可拖动标记,javascript,here-api,heremaps,Javascript,Here Api,Heremaps,所以,我需要使用地址中的纬度和逻辑度来创建一个可拖动的标记。为了从地址获取lat和lng,我执行了以下功能: var longit; var lati; function searchGeocoding() { map.removeObjects(map.getObjects()); let search; search = document.getElementById("myText").value; service.geocode( {
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
);
}
这很好用。但是,当我尝试使用API文档中的示例创建可拖动标记时,会出现以下错误:
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)
mapsjs core.js:43未捕获的无效参数interror:H.map.AbstractMarker#setGeometry(参数#0未定义)
在纽约(https://js.api.here.com/v3/3.1/mapsjs-core.js:43:977)
在Xf(https://js.api.here.com/v3/3.1/mapsjs-core.js:89:407)
在安爱巴(https://js.api.here.com/v3/3.1/mapsjs-core.js:177:548)
at on.ai[作为建造商](https://js.api.here.com/v3/3.1/mapsjs-core.js:177:309)
在纽约(https://js.api.here.com/v3/3.1/mapsjs-core.js:395:290)
在AddDragableMarker(http://127.0.0.1:5500/js/test.js:32:16)
在http://127.0.0.1:5500/js/test.js:21:9
在Array.forEach((我使用的是完全相同的代码,只是lng:-71.0636不是lat:42.35805,而是lat:lati和lng:longit。我实现了您的代码片段以找出问题所在。
如果您在文本框中使用oninput(),它会为您键入的每个字母调用地理编码器。因此,地理编码器对这些不完整的单词没有响应。您可以通过将if(result.items.length>0)
来测试这一点。
如果希望在用户键入时获得结果,If建议使用autosuggest API。
或者,只有当用户输入完整的字符串时,您才可以使用submit按钮调用函数。我实现了您的代码片段以找出问题所在。
如果您在文本框中使用oninput(),它会为您键入的每个字母调用地理编码器。因此,地理编码器对这些不完整的单词没有响应。您可以通过将if(result.items.length>0)
来测试这一点。
如果希望在用户键入时获得结果,If建议使用autosuggest API。
或者,仅当用户输入完整字符串时,才使用submit按钮调用函数