-1

Google Maps Image APIを使用して、地図の静止画像を取得しています。中心位置の座標とズーム レベルがあります。

私がやりたいことは、他の緯度/経度座標を静的マップ イメージに配置することです。そのため、緯度/経度座標を XY 座標に変換する必要があります。

私のアプローチ:

最初に、これに似たメルカトル図法を使用して、中心点のワールド座標計算します。次に、以下の式を使用して静止画像の境界を計算します。

PointF SWPoint = new PointF((float)(centerPointWorldCoordinates.X - (mapWidth / 2.0f) / scale), (float)(centerPointWorldCoordinates.Y + (mapHeight / 2.0f) / scale));

 PointF NEPoint = new PointF((float)(centerPointWorldCoordinates.X + (mapWidth / 2.0f) / scale), (float)(centerPointWorldCoordinates.Y - (mapHeight / 2.0f) / scale));

SWPointNEPointは、南西ポイントと北東ポイント (イメージ マップの境界)のワールド座標です。次に、次の式を使用してこれらの点のピクセル座標を計算します。

pixelCoordinate = worldCoordinate * 2^zoomLevel

境界のピクセル座標を取得した後、同じ数式を使用して、(マップにプロットする) 各緯度/経度ポイントのピクセル座標も計算します。

画像に特定のポイントを配置するために、次を使用します。

PointF point = new PointF((float)(pointPixelCoordinates.X - SWpixelCoordinate.X), (float)(pointPixelCoordinates.Y - NEpixelCoordinate.Y));

このようにして、ポイントを(左上隅から)移動するピクセルの量を把握できます。

このアプローチは機能していますが、ズーム レベルが非常に高い場合は特に正確ではありません。ポイントは、許容できない距離だけオフセットされています。

どうすればこれを機能させることができますか?ここで何か不足していますか?私は本当に助けていただければ幸いです:)

4

1 に答える 1

1

緯度の他の方程式を試すことができます。唯一の欠点だと思います。この質問のように、緯​​度でメルカトル図法を使用してみてください:緯度/経度をピクセル座標に変換しますか? 経度方程式を変更しないでください。

于 2014-10-06T10:20:38.450 に答える