Смещение маркеров Openlayers (не в нужном месте) - PullRequest
0 голосов
/ 02 февраля 2020

Я использую Службу веб-функций (WFS) и хочу отобразить маркер на карте OpenLayers. Извлечение ответа WFS:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wfs:FeatureCollection>
    <gml:boundedBy>
        <gml:Envelope srsName="EPSG:900913">
            <gml:lowerCorner>-89132.899298 5581504.864113</gml:lowerCorner>
            <gml:upperCorner>-51735.101149 5625545.655457</gml:upperCorner>
        </gml:Envelope>
    </gml:boundedBy>
    <gml:featureMember>
        <bm:TB_ARRET_P gml:id="TB_ARRET_P.3473">
            <gml:boundedBy>
                <gml:Envelope srsName="EPSG:900913">
                    <gml:lowerCorner>-75379.857910 5601410.987374</gml:lowerCorner>
                    <gml:upperCorner>-75379.857910 5601410.987374</gml:upperCorner>
                </gml:Envelope>
            </gml:boundedBy>
            <bm:geometry>
                <gml:Point srsName="EPSG:900913">
                    <gml:pos>-75379.857910 5601410.987374</gml:pos>
                </gml:Point>
            </bm:geometry>
            <bm:LIGNEDES>Citéis 72/Lianes 3</bm:LIGNEDES>
            <bm:MOBILIE1>Poteau</bm:MOBILIE1>
            <bm:NOMARRET>Mairie du Haillan</bm:NOMARRET>
            <bm:VILLE>LE HAILLAN</bm:VILLE>
        </bm:TB_ARRET_P>
        <bm:TB_ARRET_P>
            ...
        </bm:TB_ARRET_P>
    </gml:featureMember>
</wfs:FeatureCollection>

Я использую OpenLayers для отображения маркера с кодом ниже:

const f = new Feature({geometry: new Point([-75379.857910, 5601410.987374])});

const orangePoint = new Style({
    image: new CircleStyle({
        radius: 5,
        fill: new Fill({color: 'red'}),
        stroke: new Stroke({color: 'red', width: 3})
    })
});

f.setStyle(orangePoint);

const map = new Map({
    layers: [
        new TileLayer({ source: new XYZ({ url: this.mapboxTile }) }),
        new VectorLayer({
          source: new VectorSource({
            features: [f]
          })
        })
      ],
      target: this.idMaps$,
      view: new View({
        projection: 'EPSG:3857', // OpenLayers' default project and alias of 900913
        center: [-64436.414844, 5595687.311159],
        zoom: 12
      })
    });

Итак, вот результат:

Итак, маркер отображается, но он не очень хорошо расположен. Что мне не хватает? Как расположить маркер на автовокзале 'Mair ie'?

Спасибо за ответы!

1 Ответ

0 голосов
/ 02 февраля 2020

Если я отцентрирую OpenStreetMap на -75379.857910, 5601410.987374, он покажет Mair ie в том же месте, что и ваш маркер, поэтому либо OpenStreetMap, и ваши данные WFS неверны, либо ваша базовая карта показывает Mair ie в неправильном месте.

Google Streetview подтверждает остановку в том же месте https://www.google.com/maps/@44.8721247, - 0,6771454,3a, 25,7y, 245,69h, 82,65t / data =! 3m6! 1e1! 3m4! 1sPPVzzjGN24V3Z9FXMZTmrA! 2e0! 7i16384 8i8192? Hl = ru-RU , поэтому ваш маркер верен, а базовая карта неверна.

enter image description here

...