如何使用诺基亚地图使用国家/地区代码设置国家/地区?

时间:2013-03-12 22:19:00

标签: javascript here-api geocode

我读过您可以使用国家/地区代码搜索国家/地区(我用Nokia Here尝试了它很棒),我国代码是“SV”(我'我来自萨尔瓦多)但我不知道如何实施。我在API指南中找到了这些代码:Interface nokia.maps.search.Address,但它们没有任何示例。

你能给我一个非常简单的例子如何实现?因为我找不到任何例子。如果您知道如何在您选择的国家/地区设置自动缩放,我会非常感激。非常感谢您的帮助和宝贵的时间。

1 个答案:

答案 0 :(得分:2)

文档中描述了HERE地图地理编码服务here - 请注意,最新版本的API是链接中引用的版本2.2.4而不是2.1.1。

应使用以下脚本

加载最新的库
<script type="text/javascript" charset="UTF-8" src="http://api.maps.nokia.com/2.2.4/jsl.js?with=all"></script>

可以使用自由文本地址或结构化地址进行地理编码请求。

对于自由文本搜索,您可以显示请求:

var searchTerm = "berlin";

nokia.places.search.manager.geoCode({
    searchTerm: searchTerm,
    onComplete: processResults
});

这将是全球最大的城市,名为 BERLIN ,即德国的城市。

对于结构化地址搜索,您可以如下所示发出请求:

var address = new Object();

address.countryCode = "USA";
address.city = "Berlin";

nokia.places.search.manager.geoCode({
    address: address,
    onComplete: processResults
});

这将在美国新罕布什尔州找到柏林市。 地址对象可以包含address

中描述的任何属性

关于缩放到某个国家/地区 - 这实际上是一种 findPlaces 搜索 - 您正在寻找地方搜索行政区域的第一个(即最重要的)结果,其名称为国家。以下代码将放大到萨尔瓦多:

var zoomTo = function (data, status) {

    if (status == "OK") {
        var locations = data.results.items;
        for (var i = 0, len = locations.length ;  i < len ; i++) {

            if ( "administrative-region"  == locations[i].category.categoryId){                             
                map.zoomTo(nokia.maps.geo.BoundingBox.coverAll
                        ([locations[i].boundingBox.topLeft,
                         locations[i].boundingBox.bottomRight ]), false);
                break;
            }
        }
    } else {
        alert("The search request failed");
    }
};

var term = "El Salvador";       
nokia.places.search.manager.findPlaces({
    searchTerm: term,
    onComplete: zoomTo ,
    boundingBox: {
        topLeft: {
            latitude: 85,
            longitude: -179.99
        },
        bottomRight: {
            latitude: -85,
            longitude: 179.99
        }
    }
});