Nokia在这里映射搜索管理器

时间:2014-02-02 18:47:19

标签: here-api

我正在尝试对诺基亚进行反向地理编码调用,这里映射api:

var searchManager = new nokia.maps.search.Manager();
var searchCallback = function (observedManager, key, value) {
               if (value == "finished" && observedManager.locations[0]) {
              alert(observedManager.locations[0].displayPosition);
           } else {
                alert("Geocoding failed.");
           }
         };
searchManager.addObserver("state", searchCallback);

function ricerca(){
var text = $('#search').val();
alert(text);
searchManager.search(text);
}

当我拨打电话时,我收到以下错误:

“未捕获的类型错误:无法调用未定义的方法”搜索“

我对javascript没有那么有经验,也许这是一个愚蠢的问题,但是我被困在这里很多时间......有谁知道我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

您遇到的最可能的问题是您正在设置的变量searchManager不在函数ricerca()范围内 - 诚然,这不应该来自您的代码段中的情况已经粘贴了,但是如果你在一个单独的函数中定义searchManager它可能没有设置全局范围?

即。如果你有:

function setup(){
  var searchManager = new nokia.maps.search.Manager();
  // etc...
}

function ricerca(){
 searchManager.search(text);
}

尝试将其改为:

var searchManager;
function setup(){
  searchManager = new nokia.maps.search.Manager();
  // etc...
}

function ricerca(){
 searchManager.search(text);
}

第二种可能性是检查您是否正在使用API​​的最新 2.5.3版本,并在必要时使用额外的with参数。

适用于JavaScript的Maps API

如果您使用的是公开 JavaScript API,则应使用以下<script>标记加载库:

<script type="text/javascript" charset="UTF-8" src="http://js.api.here.com/se/2.5.3/jsl.js?with=all"></script>

并使用静态 nokia.places.search.manager进行搜索,如example

所示

适用于JavaScript的Enterprise Maps API

如果您使用的是 Enterprise JavaScript API,则<script>代码为:

<script type="text/javascript" charset="UTF-8" src="https://js.api.here.com/ee/2.5.3/jsl.js?with=all"></script>

,语法也不同,并使用nokia.maps.search.Manager实例,如本例here所示。检查您的app_codeapp_id是否已正确注册以使用此API。

您的代码段似乎是两者的混合,可能来自旧版本的API。