Here Maps - Datalens API - Обновление позиций с ошибочным аргументом ERROR - PullRequest
0 голосов
/ 15 января 2019

Здесь Datalens API выдает ошибку при попытке обновить позиции маркеров. Это не всегда, но всегда происходит, когда ждут несколько минут (взаимодействия).

ERROR:
message: "H.geo.Point (Argument #0 NaN)"
stack: "Error
    at new C (https://js.api.here.com/v3/3.0/mapsjs-core.js:11:460)
    at Wb (https://js.api.here.com/v3/3.0/mapsjs-core.js:14:180)
    at new gc (https://js.api.here.com/v3/3.0/mapsjs-core.js:18:532)
    at Object.s [as interp] (https://js.cit.datalens.api.here.com/latest/mapsjs-datalens.js:7:137026)
    at a.step_ (https://js.cit.datalens.api.here.com/latest/mapsjs-datalens.js:7:135785)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:2743:31)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (http://localhost:4200/polyfills.js:2510:47)
    at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (http://localhost:4200/polyfills.js:2818:34)
    at ZoneTask.invoke (http://localhost:4200/polyfills.js:2807:48)
    at timer (http://localhost:4200/polyfills.js:4376:29)"
name: "InvalidArgumentError"
at: "InvalidArgumentError
    at https://js.api.here.com/v3/3.0/mapsjs-core.js:11:521
    at https://js.api.here.com/v3/3.0/mapsjs-core.js:320:26"

Я проверил ВСЕ комбинации широты / долготы, которые я поместил в массив данных, и нет недопустимых чисел.

try {
    const data = [];

    pos.docs.map((item, i) => {
        const _lat = parseFloat(item.gps_latitude);
        const _lng = parseFloat(item.gps_longitude);

        if (!isNaN(_lat) && !isNaN(_lng) && !isNaN(item.gps_direction) && (_lat >= -90 && _lat <= 90) && (_lng >= -180 && _lng <= 180)) {
            data.push([item.name, _lat, _lng]);
        }
    });

    if (this.dataLensProvider) {
        try {
            this.dataLensProvider.setData({
                columns: ['id', 'lat', 'lng'],
                rows: data
            });
        } catch (e) {
            console.log(e);
        }
    }
} catch (e) {
    console.log(e);
}

Ожидается: все маркеры анимации работают. Фактически: после некоторых обновлений API возвращает ОШИБКУ и не применяет изменения.

1 Ответ

0 голосов
/ 21 января 2019

Это может иметь разные причины. В приведенном выше фрагменте я мог только догадываться. Проходит ли полный массив или останавливается в определенной позиции? Вы пытались отладить эту часть дальше?

...