0

GPS 座標を、表示された Google マップ上の画面上の位置に変換するアルゴリズムが必要です。これは簡単だと思います。表示されたマップの四隅の座標を取得し、差分を見つけて、画面上のピクセル位置のスケーリング係数を作成します。これは正しいですか、何か不足していますか。これがうんざりして行われたことは知っていますが、それをうまく実装した人、またはそれを実装するためのリソースを持っている人から連絡を取りたいと思っています。

4

4 に答える 4

2

基本的に、横メルカトル図法 (Google マップなどで使用される) のコードが必要です。これは、 Kosmosソフトウェアを使用した C# スニペットです。

public Point2<int> ConvertMapToViewCoords (Point2<double> mapCoords)
{
    double x = (mapCoords.X - MapPosition.Longitude) / resolution;
    double y = Math.Log (Math.Tan (Math.PI*(0.25 + mapCoords.Y/360)))*u180dPiResolution;

    return new Point2<int> ((int)(x + viewWidthHalf), (int)((y0 - y) + viewHeightHalf));
}

使用される変数:

double resolution = 360.0 / (Math.Pow (2, MapPosition.ZoomFactor) * 256);
double u180dPiResolution = 40.7436654315252 * Math.Pow(2, MapPosition.ZoomFactor);
double y0 = Math.Log(Math.Tan(Math.PI * (0.25 + MapPosition.Latitude / 360))) * u180dPiResolution;
float viewWidthHalf = ViewWidth / 2.0f;
float viewHeightHalf = ViewHeight / 2.0f;

ZoomFactor は Google のズーム レベルです ( http://laudontech.com/GISBlog/?p=28を参照)。ところで、OpenStreetMap や Yahoo Maps などでも同じコードが機能します。それらはすべて同じ投影法とタイル システムを使用しているためです。

于 2009-03-26T12:30:56.347 に答える
1

Google Maps API を使用すると、このようなことができます。

以下は、似たようなことを行う API を使用して作成した JS コードです。

var map = new GMap2(document.getElementById("map"));

//...

var location = new GLatLng(37.771008, -122.41175);
map.setCenter(location);

var marker = new GMarker(location);
var overlay_caption = "Our location!";

GEvent.addListener(marker, "click", function() {
  marker.openInfoWindowHtml(overlay_caption);
});

map.addOverlay(marker);
marker.openInfoWindowHtml(overlay_caption);
于 2009-01-20T05:16:37.700 に答える
0

Google マップの現在のインスタンスの緯度/経度位置のピクセル座標が必要な場合は、fromLatLngToDivPixel()関数を使用できます。

map が初期化された GMap2 のインスタンスであると仮定します。

var location = new GLatLng(37.771008, -122.41175);
var point = map.fromLatLngToDivPixel(location);

alert("X: " + point.x + ", Y: " + point.y);

必要に応じて、fromLatLngToContainerPixelも参照してください。

于 2009-05-12T11:25:16.823 に答える
0

次のような URL を使用して、ページを新しいマップにリダイレクトすることもできます。

http://maps.google.com/maps?q=37.771008,+-122.41175+(You+can+insert+your+text+here)&iwloc=A&hl=en

于 2009-01-20T05:19:18.680 に答える