2009-06-29 114 views
6

我想在Google地图上创建一个叠加层,以不同颜色显示不同的街道。在Google地图中标记街道

在Google Maps API中,可以创建覆盖特定区域的标记和多边形。

是否有办法以某种方式标记不同的街道?

回答

3

就像你有兴趣呈现出一些专用着色为您谷歌地图显示(而不是交通地图)这听起来我。

如果是这样,那么你应该检查自定义覆盖。您可以创建自己的透明背景叠加拼贴(使用彩色街道),将它们与Google地图拼贴对齐,然后叠加在地图上。你可以在Maps API reference - Overlays找到这个东西的描述。

我真的有兴趣尝试这个,这个问题可能是一个很好的借口。我会让你知道我怎么走。

编辑:好吧,我尝试这样做,这是pretty straightforward。您只需在Google地图页面加载时(对于要覆盖的区域)抓取图像图像。请确保您跟踪原始网址,因为这些网址具有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) 

此代码覆盖我东西吃NY瓷砖:

在x = 38598和y = 49259在放大17级

1

可以在Google Maps API中创建标记和多边形。您需要创建GPolygon和/或GPolyline对象

,看一下these tutorials

如果你想获得的坐标某些街道(纬度,经度),你可以看看到的源代码this page

我不知道要充分了解你的问题:你想标记某个给定的街道吗? 在这种情况下,一个快速和肮脏的方式可能是获得街道的所有地址的坐标,并根据他们建立一个GPolygon ...

0

尝试挖掘用于显示流量覆盖在正常的Google地图网站上。

编辑:我只是看着代码,似乎即使谷歌决定它更容易只是生成服务器上的交通线路,并拉他们,如同透明的PNG叠加来实现这个。

0

我刚刚发现this link,我认为这可能会感兴趣。它是一个JavaScript包,提供在Google地图上显示多条路线的功能。

是你在找什么?