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));
SWPointとNEPointは、南西ポイントと北東ポイント (イメージ マップの境界)のワールド座標です。次に、次の式を使用してこれらの点のピクセル座標を計算します。
pixelCoordinate = worldCoordinate * 2^zoomLevel
境界のピクセル座標を取得した後、同じ数式を使用して、(マップにプロットする) 各緯度/経度ポイントのピクセル座標も計算します。
画像に特定のポイントを配置するために、次を使用します。
PointF point = new PointF((float)(pointPixelCoordinates.X - SWpixelCoordinate.X), (float)(pointPixelCoordinates.Y - NEpixelCoordinate.Y));
このようにして、ポイントを(左上隅から)移動するピクセルの量を把握できます。
このアプローチは機能していますが、ズーム レベルが非常に高い場合は特に正確ではありません。ポイントは、許容できない距離だけオフセットされています。
どうすればこれを機能させることができますか?ここで何か不足していますか?私は本当に助けていただければ幸いです:)