Google maps 使用谷歌地图时,将GPS坐标映射到屏幕位置的好算法是什么?

Google maps 使用谷歌地图时,将GPS坐标映射到屏幕位置的好算法是什么?,google-maps,gps,Google Maps,Gps,我需要一个算法,将GPS坐标转换为显示的谷歌地图上的屏幕位置。我认为这很简单——获取显示地图的四个角的坐标,找到差异,并为屏幕上的像素位置创建一个比例因子。这是正确的还是我遗漏了什么。我知道这是非常自然的,但我希望我能从成功实现它或有资源实现它的人那里听到消息 让你做这样的事情 下面是我使用API编写的一些JS代码,它们做了类似的事情: var map = new GMap2(document.getElementById("map")); //... var location = new

我需要一个算法,将GPS坐标转换为显示的谷歌地图上的屏幕位置。我认为这很简单——获取显示地图的四个角的坐标,找到差异,并为屏幕上的像素位置创建一个比例因子。这是正确的还是我遗漏了什么。我知道这是非常自然的,但我希望我能从成功实现它或有资源实现它的人那里听到消息

让你做这样的事情

下面是我使用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);
它可以让你做这样的事情

下面是我使用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);

您还可以使用如下URL将页面重定向到新地图:


http://maps.google.com/maps?q=37.771008,+-122.41175+(您可以+插入+您的+文本+此处)&iwloc=A&hl=en

您还可以使用如下URL将页面重定向到新地图:


http://maps.google.com/maps?q=37.771008,+-122.41175+(您可以+插入+您的+文本+此处)&iwloc=A&hl=en

基本上,您需要横向墨卡托投影的代码(谷歌地图和其他人使用)。下面是我用我的软件编写的一个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));
}
ZoomFactor是Google缩放级别(请参阅)。
顺便说一句,相同的代码适用于OpenStreetMap、Yahoo Maps等,因为它们都使用相同的投影和平铺系统。

基本上,您需要横向墨卡托投影的代码(谷歌地图和其他人使用)。下面是我用我的软件编写的一个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));
}
ZoomFactor是Google缩放级别(请参阅)。
顺便说一句,相同的代码适用于OpenStreetMap、Yahoo Maps等,因为它们都使用相同的投影和平铺系统。

如果您需要Google Maps当前实例的纬度/经度位置的像素坐标,您可以使用该功能

假设map是初始化的GMap2的实例:

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

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

根据您的需要,另请参见。

如果您需要当前谷歌地图实例的纬度/经度位置的像素坐标,您可以使用该功能

假设map是初始化的GMap2的实例:

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

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

根据您的需要,另请参见。

地图位置实际是什么。纬度@igor?是位于屏幕中心还是左上角的纬度?地图的实际位置是什么?纬度@igor?是位于屏幕中心还是左上角的纬度?