目前我正在做一个项目,我应该在 map 上向世界各地的不同客户展示.我使用Bing Maps API确定这些客户的坐标.但如果我想要在 map 上显示这些客户,我会得到一些错误,即坐标错误.数据库中的坐标看起来是正确的,并由Bing Maps 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 错误: 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

推荐答案

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

  1. 在浏览器中打开dev控制台,在创建Location对象的位置添加断点.判断value['latitude']是字符串数字还是实际数字("1"对1).如果它是一根线,用parseFloat(parseFloat(value['latitude'])一样把value['latitude']value['longitude']包起来.这是导致此类错误的最常见原因.
  2. 如果以上方法都不能解决您的问题,最好判断一下您的数据(我假设您已经将坐标存储在某个地方).仔细判断您没有反转latitude值和longitude值(获取几个条目并在bing.com/map上手动搜索它们,并判断坐标以验证您的经度/经度列中的内容是否在相同的一般区域中).如果您可以查询您的数据集(它是一个数据库吗?),您就可以判断所有纬度和经度值.纬度值应介于-90度和90度之间,经度应介于-180和180度之间.如果您发现任何超出此范围的内容,可能是因为数据不正确,或者您的数据中已交换了纬度/经度值.

Javascript相关问答推荐

React状态变量在使用++前置更新时引发错误

设置默认值后动态更新japbox或调色板

通过在页面上滚动来移动滚动条

提交表格后保留Web表格中的收件箱值?

如何解决CORS政策的问题

使用复选框在d3.js多折线图中添加或删除线条

PrivateRoute不是路由组件错误

函数返回与输入对象具有相同键的对象

空的结果抓取网站与Fetch和Cheerio

在我的html表单中的用户输入没有被传送到我的google表单中

如何从隐藏/显示中删除其中一个点击?

在WordPress中使用带有WPCode的Java代码片段时出现意外令牌错误

Reaction Redux&Quot;在派单错误中检测到状态Mutations

Next.js中的服务器端组件列表筛选

是否可以将异步调用与useState(UnctionName)一起使用

未捕获语法错误:Hello World中的令牌无效或意外

Node.js API-queryAll()中的MarkLogic数据移动

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

postman 预请求中的hmac/sha256内标识-从js示例转换

JSX/React -如何在组件props 中循环遍历数组