1

编辑:我重新格式化了问题,因为有人向我指出问题不在 Mapbox API 中。

几天前,一个使用 mapbox 匹配 API 和 Leaflet.js 的应用程序开始在地球的另一边绘制折线。

虽然它自己看起来应该是这样的路径,但传单将它描绘在另一个大陆上。Mapbox 匹配 API 按照 GEOJson 标准返回响应:

{
    "code": "Ok",
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "geometry": "e`s`YmyazuAg`@y]uo@ej@eQcOkFkEyCeCaYmUuFoMkWgOo[_ReGqDoGyDmVaPaU|RoDlDsa@z`@sTdSXJf@j@??Jr@Mp@ML[Z}@ZiAHgAK]MaJzJsUbWkSxRyHpHuLhLuFzFqDrDq[`\\oPrPyK|KmU|TuLzKyClCr@ZZf@Fj@Ij@e@b@zn@fZ}Zf]gCdKmHxQErC[jV",
        "properties": {
            "confidence": 0.45413768894813844,
            "distance": 1366.4,
            "duration": 243.3,
            "matchedPoints": [
                [13.658131, 45.532583],
                [13.659851, 45.534127],
                [13.661445, 45.535438],
                [13.662397, 45.535398],
                [13.663582, 45.534237],
                [13.666378, 45.531441],
                [13.666457, 45.529215]
            ],
            "indices": [0, 1, 2, 3, 4, 5, 6]
        }
    }]
}

使用下面的代码使用 leaflet.js 绘制图层会导致在错误位置绘制多段线。

L.mapbox.mapmatching(geojson, options, function (error, layer) {
            layer.addTo(map);
            layer.setStyle({
                color: '#3c8dbc',
                weight: 4,
                opacity: 0.8
            });
            //fit bounds to added layer
            map.fitBounds(layer.getBounds());

结果是:

折线在衙门而不是欧洲绘制

虽然折线本身是应有的,但位置却不是。我推测问题是传单期望坐标格式为 [纬度,经度],而 Mapbox 匹配 API 返回 GEOJson 格式,即 [经度,纬度]。

我应该在绘制之前手动切换响应的坐标还是我做错了?

谢谢。

编辑2:看来问题实际上是不同的格式。有关它的更多信息可以在这篇文章中找到 更改返回对象中坐标的顺序非常繁琐,因此非常适合解决这个问题。

4

0 回答 0