小编典典

如何在 Bing Maps V8 Web 控件中捕获因纬度或经度错误而导致的错误?

all

目前我正在做一个项目,我应该在地图上向世界各地的各种客户展示。我使用 Bing Maps API 确定这些客户的坐标。但是如果我想在地图上显示这些客户,我会得到一些坐标错误的错误。数据库中的坐标看起来正确,并由 Bing 地图 API 返回给我。

现在的问题是:我如何捕获这个错误,以便脚本不会因此而崩溃?

let map;
let searchManager;
let customers = <?= json_encode($elements); ?>;
let pins = [];
let iconURL = '';

function GetMap() {
    var statusDropdownValue = parseInt($('#status').val());

    map = new Microsoft.Maps.Map('#map', {
        zoom: 1
    });

    $.each(customers, function(index, value) {
        var customerLocation = new Microsoft.Maps.Location(value['latitude'], value['longitude']);

        var pin = new Microsoft.Maps.Pushpin(customerLocation, {
            icon: baseURL + 'assets/images/pin.png'
        });

        pin.metadata = {
            id: value['id'],
            customerName: value['customer_name'],
            postCode: value['post_code'],
            city: value['city'],
            countryCode: value['country_code']
        };

        pins.push(pin);
    });

    Microsoft.Maps.loadModule("Microsoft.Maps.Clustering", function () {
        clusterLayer = new Microsoft.Maps.ClusterLayer(pins);
        map.layers.insert(clusterLayer);
    });

    Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', function () {
        var manager = new Microsoft.Maps.AutosuggestManager({ map: map });
        manager.attachAutosuggest('#search', '#search-container-search-bar', selectedSuggestion);
    });
}

错误:

Uncaught Error: Invalid latitude
n https://r.bing.com/rp/iKR9c24bDSIz79-enVSnBoJvZx8.br.js:1
GetMap http://localhost/projects/BattermannTillery_HK_Locator/maps:101
each jQuery
GetMap http://localhost/projects/BattermannTillery_HK_Locator/maps:100
notifyMapReadyForBootstrap https://www.bing.com/api/maps/mapcontrol?callback=GetMap&setMkt=en-US&setLang=en&key=AlV57vXOvuSENqgwu6hnNKGhiLf85dbTMlnDY81z2cGq40L1xkMdXUVSkEhvqfvv:12
<anonymous> https://r.bing.com/rp/RENSVX2edu6CiHiu-aMi-GbtqbA.br.js:1
<anonymous> https://r.bing.com/rp/RENSVX2edu6CiHiu-aMi-GbtqbA.br.js:1

阅读 95

收藏
2022-08-24

共1个答案

小编典典

我将执行以下操作来调试此问题:

  1. Location在浏览器中打开开发控制台,在创建对象的位置添加一个断点。检查value['latitude']是字符串数字还是实际数字(“1”与 1)。如果是字符串,则value['latitude']value['longitude']likeparseFloat换行(parseFloat(value['latitude'])。这是此类错误的最常见原因。
  2. 如果上述方法不能解决您的问题,最好检查您的数据(我假设您将坐标存储在某处)。仔细检查您没有反转latitudelongitude值(获取几个条目并在 bing.com/maps 上手动搜索它们并检查坐标以验证您在纬度/经度列中的内容是否位于同一大区)。如果您可以查询您的数据集(它是数据库吗?),您可以检查所有纬度和经度值。纬度值应介于 -90 和 90 度之间,经度值介于 -180 和 180 之间。如果您发现任何超出此范围的内容,可能是由于数据错误,或者您的数据中交换了纬度/经度值。
2022-08-24