Положите координаты в правильном формате - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь поместить данные о местоположении из бэкэнда в response-map-gl, у меня есть небольшое препятствие по этому поводу.

    addLines = () => {
    const geo = this.state.geo;
    const insideGeo = geo.map(dataItem => {
        const json = new Buffer(dataItem.payload, "hex").toString();
        if (json !== '')
            return JSON.parse(json);
        return json;
    }).filter(item => (item !== ''));
    const lat = insideGeo.map(item => item.eventData.location.latitude);
    const lon = insideGeo.map(item => item.eventData.location.longitude);
    console.log('Lat:', lat[4]);
    console.log('Lon:', lon[4]);
    const map = this.refs.map.getMap()
    map.addLayer({
        "id": "route",
        "type": "line",
        "source": {
            "type": "geojson",
            "data": {
                "type": "Feature",
                "properties": {},
                "geometry": {
                    "type": "LineString",
                    "coordinates": [
                        [
                            lon[4], lat[4]
                        ],
                        [
                            lon[5], lat[5]
                        ],
                    ]
                }
            }
        },
        "layout": {
            "line-join": "round",
            "line-cap": "round"
        },
        "paint": {
            "line-color": "#18c3ea",
            "line-width": 3
        }
    });
}

Его экран консольного журнала lon и lat Я хочу поставить целую координату следующим образом: {lon} {lat}

Это работает, если я соберу только определенное число.

Как передать его?

Спасибо

1 Ответ

0 голосов
/ 10 декабря 2018

Судя по вашему коду, это похоже на работу.

Подход массива:

Замените следующие строки:

const lat = insideGeo.map(item => item.eventData.location.latitude);
const lon = insideGeo.map(item => item.eventData.location.longitude);

На:

const coords = insideGeo.map(item => [item.eventData.location.latitude, item.eventData.location.longitude]);

Вы можете получить доступ к номерам следующим образом:

const lat = coords[index][0]
const lon = coords[index][1]

Подход к объекту:

Заменить следующие строки:

const lat = insideGeo.map(item => item.eventData.location.latitude);
const lon = insideGeo.map(item => item.eventData.location.longitude);

С помощью:

const coords = insideGeo.map(item => item.eventData.location);

Вы можете получить доступ к следующим номерам:

const lat = coords[index].latitude
const lon = coords[index].longitude
...