我想在Google地图上创建一个叠加层,以不同的颜色显示不同的街道。
在Google Maps API中,可以创建覆盖特定区域的标记和多边形。
有没有办法以某种方式标记不同的街道?
答案 0 :(得分:3)
听起来我觉得你有兴趣为你的谷歌地图展示(而不是交通地图)展示一些特定应用的着色。
如果是这样,那么你应该检查自定义叠加层。您可以创建自己的透明背景叠加图块(使用彩色街道),将它们与Google地图图块匹配,然后将它们叠加在地图上。您可以在Maps API reference - Overlays。
中找到有关此内容的说明我实际上有兴趣尝试这个,这个问题可能是一个很好的借口。我会让你知道我的去向。
编辑:好的,我试过了,它是pretty straightforward。您只需要在谷歌地图页面加载时抓取图块图像(对于您想要叠加的区域)。确保跟踪原始网址,因为它们具有编写切片叠加方法所需的x,y坐标。
使用彩色道路编辑图块,然后将其上传到Web服务器。添加以下代码以在常规地图上使用叠加层:
var myCopyright = new GCopyrightCollection("© ");
myCopyright.addCopyright(new GCopyright('Demo',
new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)),
0,'©2007 Google'));
// Create the tile layer overlay and
// implement the three abstract methods
var tilelayer = new GTileLayer(myCopyright);
// properties of the tile I based my tile on
// v=w2.97&hl=en&x=38598&s=&y=49259&z=17&s=Galil.png
tilelayer.getTileUrl = function(point, zoom) {
if (zoom == 17 && point.x == 38598 && point.y == 49259)
return "../pics/times_square.png";
};
tilelayer.isPng = function() { return true;};
tilelayer.getOpacity = function() { return 1.0; }
var myTileLayer = new GTileLayerOverlay(tilelayer);
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(40.75740, -73.98590), 17);
map.addOverlay(myTileLayer)
此代码覆盖我的 Thing吃NY 磁贴:
在x = 38598,y = 49259,在缩放级别为17.
答案 1 :(得分:1)
可以在Google Maps API中创建标记和多边形。您需要创建GPolygon和/或GPolyline对象
如果您想获得某些街道的坐标(纬度,经度),您可以查看this page的源代码
我不确定完全理解你的问题:你想标记一些特定的街道吗? 在这种情况下,快速而肮脏的方法可能是获取街道的所有地址的坐标并根据它们构建GPolygon ...
答案 2 :(得分:1)
您是否考虑过使用OpenStreeMaps?
答案 3 :(得分:0)
尝试深入了解用于在普通Google地图网站上显示流量叠加层的代码。
编辑:我只看了一下代码,看来谷歌甚至认为通过在服务器上生成流量线并将其作为透明的PNG叠加层拉下来来实现这一点更容易实现。
答案 4 :(得分:0)
我刚刚找到this link,我认为这会引起你的兴趣。它是一个JavaScript包,提供在Google地图上显示多条路线的功能。
这是你在找什么?