原文:
Marker Manager作者:
Doug Ricket 和 Bo Majewski,Google Maps,软件工程师
在2.67版中,我们发布了新类GMarkerManager。标记管理器用来帮助用户在地图上显示大量的的点,这可能并不适合所有的场景,我们希望能对那些面向实战的应用带来帮助。它可以根据用户的可视范围和缩放级别来决定是否显示标记。欢迎在API讨论组提出意见和建议,帮我们完善这个以及API的其他特性。
标记管理器范例:气象地图
The following example creates a mock weather map for Europe. At zoom level 3, 20 randomly distributed weather icons are displayed. At level 6, when all 200 cities with population over 300,000 are easily distinguished, an additional 200 markers are shown. Finally, at level 8, 1000 markers are shown. (Note: to simplify the example, markers will be added at random locations.)
下面的例子创建了一个假想的欧洲天气地图。在缩放级别3,地图显示20个随机天气图标。在缩放级别6,当人口超过30万的200个城市清晰可见的时候,地图显示另外的200个天气图标。最后,在缩放级别9,地图上会显示1000个天气图标(注意:为了简化例子,天气图标的位置都是随机的。)。
查看例子 (weather_map.html)function setupMap() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(41, -98), 4);
window.setTimeout(setupWeatherMarkers, 0);
}
}
function getWeatherMarkers(n) {
var batch = [];
for (var i = 0; i < n; ++i) {
batch.push(new GMarker(getRandomPoint(), { icon: getWeatherIcon() }));
}
return batch;
}
function setupWeatherMarkers() {
mgr = new GMarkerManager(map);
mgr.addMarkers(getWeatherMarkers(20), 3);
mgr.addMarkers(getWeatherMarkers(200), 6);
mgr.addMarkers(getWeatherMarkers(1000), 8);
mgr.refresh();
}
Labels: marker, Marker Manager, 版本升级
由于
Google Maps API 2.63版本的发布,
Google Maps API中文同步文档进行了更新。2.63版本加入的特性不多,只有两个,一是增加GMarkerOptions类的属性dragCrossMove,用来控制在可拖动标记拖动时,是标记上升,还是"X"下降,这个更新对功能无任何影响,只是提高了交互细节的灵活性,二是加入了编码折线,这是一个重大的更新,编码折线改变了原来用点数组来初始化折线(GPolyline类)的方式,采用编码后的字符串来初始化折线。编码折线降低了内存的使用,提高了显示速度,并且可以指定每个点的最高可视缩放级别,大大提高了灵活性。
具体更新重要通知
还没有升级到API 2的地图应用,请立刻考虑升级事宜,因为
根据Google Maps Api官方Blog的消息,他们已经把关闭API 1的支持列入了计划中,可能会在一个月后正式关闭API 1的支持。技术细节请参考
升级指南。
Labels: dragCrossMove, Encoded Polylines, GMarkerOptions, GPolyline, marker, 文档
原文:
New Satellite Imagery and Performance Improvements作者:Joel Headley,Google Maps API布道者
Maps API 2最近进行了一些更新,包括修正了几个Bug,改善了API的性能,以及在全世界范围内对卫星图形进行了更高分辨率的更新。
- 卫星图形更新 我们更新了图形数据库的主要部分。这次更新包括,17个美国城市(Albuquerque, Augusta, Baltimore, Corpus Christi, Houston, Little Rock, McAllen, Miami, Philadelphia, Pierre, Pittsburg, Riverside-San Bernadino, San Diego, San Juan, Spokane, St. Louis, Wichita),6个日本地区(Chiba, Ehime, Kagawa, Kanagawa, Nara, Shizuoka),7个德国城市(Dusseldorf, Erlangen, Fuerth, Gelsenkirchen, Ludwigshafen, Muenchen, Schwerte, Karlsruhe),以及荷兰。我们还大幅度提高了卫星图像的覆盖范围,并更新了美国几个州(Califonia, Georgia, Montana, Rhode Island, Connecticut, New Hampshire, Maryland, Texas, Florida, Maine, Louisiana, New York)的卫星图像。
- 改变了API的错误处理方式 以前,当事件处理函数中发生错误时,Maps API会捕捉错误并阻止它,也就是说地图可能会无视错误的发生而继续运行。很多开发者告诉我们,这样大大提高了他们在事件处理函数中调试代码的难度,所以我们改变了Maps API,使其不再阻止错误。如果你的程序代码在2.62版本下一切正常,而在2.63版本下无法工具,那么说明你的事件处理代码中可能存在错误。如果你遇到了这种问题而且无法修正,请在Maps API讨论组反馈你遇到的问题。
- 加快了addOverlay()方法的运行速度 最近我们提高了removeOverlay()方法的性能,接下来我们就改进了addOverlay的性能,也就是说现在放地图中加入标记的速度被大大提高了。API优化后,加入100个标记消耗的事件是改进之前的55%。你可以自己测试一下当前版本和老版本的性能。
- GTileLayerOverlay的Bug修正 我们修正了讨论组中提到的这个问题(译注:GTileLayerOverlay无法删除)。请注意,应该在TileLayerOverlay对象上调用addOverlay()和removeOverlay()方法,而不是在GTileLayer之上。
- 可拖动的标记 我们改进了可拖动的标记,给用户更多灵活性。现在你可以选择在移动标记的时候,是标记抬起,还是“X”落下,这一改进是根据我们收到的一些反馈作出的。把GMarkerOptions的dragCrossMove属性设为true看看吧(译注:需要仔细看,不然确实看不清楚……)。
我们忙于改进API 2的性能,另外我们希望提醒每个人升级到API 2。我们计划在大约一个月后关闭API 1的支持。如果你还没有升级,请访问我们的
升级指南。
API v1 最新版: 1.31
API v1 默认版: 1.31
API v2 最新版: 2.63
API v2 默认版: 2.62
Labels: addOverlay, dragCrossMove, GMarkerOptions, GTileLayerOverlays, marker
原文:
Draggable Markers and GTileLayerOverlays作者:
Rob Schonberger,软件工程师Google Maps Api 2.61修正版引入了两个非常酷的功能——可拖动的标记和GTileLayerOverlays。
可拖动的标记
在2.46修正版中,我们加入了一个隐藏功能可拖动的标记,而今天这个功能作为Google Maps Api的一部分正式登场了。想让标记可以拖动,在你声明这个标记的时候,设置draggable选项为true:var marker = new GMarker(center, {draggable: true});。
当你拖动标记的时候,会出现一个X型图标用来标明标记将被放置的位置。你放下标记后,它会跳到位置(这会令你感到非常有趣)。如果你更喜欢不会跳动的标记,请把标记的bouncy选项设为false。
来试试看这个可以拖动的标记。
GTileLayerOverlay(图块层覆盖对象)
Google Maps Api中有
GTileLayer类(用来创建你的GMapType)以及GOverlay类(用来在地图上面显示物体)。现在我们引入GTileLayerOverlay类,你可以用它在图块层(译注:Google Map的地图是一个一个图块组成的,图块层就是组成地图的图块所在的层)加入自己的内容,而不需要引入新的地图类型。你可以随意加入和去掉他们,不像创建新的地图类型那么麻烦。例如,为了创建一个半透明地图,你可以用一个50%透明度的
GTileLayerOverlay覆盖在地图上。
var tilelayer = new GTileLayer(new GCopyrightCollection(), 0, 17);
tilelayer.getTileUrl = function(tile, zoom) {
// 一个更有意思的图块层覆盖对象会处理这些数字的
// tile.x, tile.y and zoom.
return "http://kml.lover.googlepages.com/white_map_tile.gif";
};
tilelayer.getOpacity = function() {return 0.5;}
map.addOverlay(new GTileLayerOverlay(tilelayer));
效果请见。
如果你想测试最新的功能,别忘了用
v=2.x参数代替原有的Api版本参数。
API v1 Current: 1.31
API v1 Default: 1.31
API v2 Current: 2.61
API v2 Default: 2.60
Labels: GTileLayerOverlays, marker, translate