Openlayers 标记偏移(不在正确的位置)
Openlayers markers offset (not at the right place)
我正在使用网络要素服务 (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
})
});
所以,这是结果:
因此,显示了标记,但位置不正确。
我错过了什么?如何将标记置于公交车站 'Mairie' 的中心?
感谢您的回答!
如果我将 OpenStreetMap 置于 -75379.857910、5601410.987374 的中心,它会在与您的标记相同的位置显示 Mairie,因此 OpenStreetMap 和您的 WFS 数据均有误,或者您的底图将 Mairie 显示在错误的位置。
Google 街景确认在同一位置停靠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=en-GB 所以你的标记是正确的,底图是错误的。
我正在使用网络要素服务 (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
})
});
所以,这是结果:
因此,显示了标记,但位置不正确。 我错过了什么?如何将标记置于公交车站 'Mairie' 的中心?
感谢您的回答!
如果我将 OpenStreetMap 置于 -75379.857910、5601410.987374 的中心,它会在与您的标记相同的位置显示 Mairie,因此 OpenStreetMap 和您的 WFS 数据均有误,或者您的底图将 Mairie 显示在错误的位置。
Google 街景确认在同一位置停靠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=en-GB 所以你的标记是正确的,底图是错误的。