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