在ArcGIS Web API应用程序中使用灰度地图
上个月底,ArcGIS Online发布了一款全新风格的底图服务,Light Gray Basemap。该底图服务尽可能少地使用了色彩,标注和要素内容,目的是突出地图的主题内容,把重点展示给最终用户。美化的底图固然好看,但有时我们不能为了使用地图而去使用地图,忽略了我们真正想要表达的意思,很多时候,都会回归到以简为美的原点。使用这种底图服务,我们可以很轻松的将注意力集中在业务数据上。 可以看到,只有在右上角的Light Gray Canvas底图上,四个要素点才清晰可见。 其实Google Maps API中就一直能够设置显示风格,以适应我们的需求。虽然ArcGIS Online已经推出了灰度底图服务,但对于自己的底图服务(尤其是国内数据用户)来说,如何能够风格化显示呢?以ArcGIS API for Silverlight为例来说明。 缓存地图服务所对应的ArcGISTiledMapServiceLayer类中,暴露出了TileLoaded事件(继承自TiledLayer)。这个事件会在每一个切片加载完成时触发,并且事件参数中可以获得ImageSource属性,它就是切片本身,随后地图控件会对这些切片进行拼接,从而形成完整的地图。我们的工作,就是在这个事件中,对切片上的每个像素做色彩处理,从而达到风格化地图服务的效果。在Silverlight中,我们可以利用WritableBitmap来完成这项工作,代码如下,具体原理可自己参详: 1: private void ArcGISTiledMapServiceLayer_TileLoaded(object sender, TiledLayer.TileLoadEventArgs e) 2: { 3: WriteableBitmap wb = new WriteableBitmap(e.ImageSource as BitmapSource); 4: for (int y = 0; y < wb.PixelHeight; y++) 5: { 6: for (int x = 0; x < wb.PixelWidth; x++) 7: { 8: int pixel = wb.Pixels[y * wb.PixelWidth + x]; 9: byte[] … Continue reading 在ArcGIS Web API应用程序中使用灰度地图
