使用 HTML5 地理定位的 HERE 地图

HERE Maps using HTML5 Geolocation

我在使用 HERE 地图的 HTML5 地理定位 API 时遇到问题。首先我制作了一个可以正常工作的测试文档:

var test = document.getElementById('test');

var coords = navigator.geolocation.getCurrentPosition(success);

function success(position) {
      test.innerHTML = 'Latitude: ' + position.coords.latitude +
                       "<br>Longitude: " + position.coords.longitude;
}

http://jsfiddle.net/d8age6ss/

之后,我尝试将该代码添加到我的 HERE 地图中:

var coords = navigator.geolocation.getCurrentPosition(success);

function success(position) {
    var location = '{ lat: ' + position.coords.latitude + ', lng: ' + position.coords.longitude; + ' }'
}        

function setView(map) {
    map.setCenter(location);
    map.setZoom(12);
}

我看不出有什么问题。在 https://developer.here.com/javascript-apis/documentation/maps 上,据说支持 HTML5 地理定位。

感谢您的帮助!

你的问题是你的 success 函数中有一个局部变量:

function success(position) {
    var location = ...
}        

只有那个函数可以使用那个变量。所以当你尝试在setView函数中再次使用它时,它不会知道它是什么。

function setView(map) {
    map.setCenter(location);

相反,您需要做的是将 location 设为全局变量,或者将其作为参数传递给 setView 函数。例如

var location;

function success(position) {
    location = {
        lat: position.coords.latitude,
        lng: position.coords.longitude
    };
}        

function setView(map) {
    map.setCenter(location);
    map.setZoom(12);
}

(另外 location 不需要创建为字符串,所以我稍微修改了一下)。

我没看到你从哪里给 setView 打电话?