——王嘉彬(Esri中國上海分公司)
1、背景
1.1、主流互聯網地圖應用的現狀
在目前主流的互聯網地圖應用中,如 Google Map(圖 1)、搜狗地圖(圖2),POI 興趣點的文字標注越來越多的應用了“活動地圖標注”技術。相較於傳統的靜態地圖標注,活動地圖標注可以接受鼠標事件,用戶既可以在地圖上通過把鼠標指針移動到標注文字上或 POI 點獲取簡要信息,也可直接點擊標注文字或 POI點以獲取更為詳細的 POI 信息,並能完成與該 POI 點相關的其它功能,從而為用戶提供了良好的操作體驗。
圖 1
圖 2
1.2、基於 ArcGIS Server的地圖應用現狀
目前,基於 ArcGIS Server 的互聯網地圖應用還都沒有提供上述的功能和效果,地圖標注還只是單純的在底圖上顯示,僅起到美化和充實地圖的作用。這樣的應用模式,可以在一定程度上提高用戶的使用體驗,但在用戶的實際使用中仍會帶來很多不方便的地方,例如當用戶通過地圖漫游找到了自己需要的地圖要素,但是他無法直接使用看到的內容,仍然需要通過搜索框或 Identify 之類工具才能獲得地圖要素的信息,操作繁瑣,在一定程度上給用戶流暢的使用應用帶來了影響。對於面向公眾的地圖應用,應用的主要內容就是 POI 興趣點,而 POI 興趣點的主要表達方式就是地圖標注,如果僅是把 POI 興趣點標注顯示在占應用程序窗口絕大部分空間的底圖上,那對用戶真正有用的功能就只能通過占應用程序窗口很小一部分的工具條或對話框來實現,這會使整個應用顯得相對死板,如基於arcgisonline.cn提供的地圖服務所建立的應用(圖3)、遼寧省地理信息平台(圖4),等等。而如果能在地圖應用中使用活動地圖標注技術,則會使整個底圖“活”起來,提升用戶體驗。
圖3
圖4
2、在 ArcGIS Server中實現活動地圖標注
在 ArcGIS 中並沒有直接提供對應的工具來實現活動地圖標注。如果要在基於ArcGIS Server 的地圖應用中實現活動地圖標注,首先需要獲得地圖標注的位置信息,即標注文字的外接矩形。通過將標注文字的外接矩形在客戶端添加到GraphicLayer可以為地圖標注提供鼠標事件的響應, 例如當用戶把鼠標移動到標注文字的上面,顯示出“手形”的鼠標指針效果,表示這是一個可供深入查詢的信息入口。
2.1、生成 Annotation圖層
在ArcMap可以將地圖標注轉換為 Annotation 圖層,獲取標注的外接矩形。但是如果直接在ArcMap中將圖層標注轉換為 Annotation 會無法與最終的地圖切片中的標注重合,因為地圖切片過程中標注的計算范圍與ArcMap中不同。為了能夠使得 Annotation 圖層能夠與最終切圖上的地圖標注完全重合,需要使用工具“Tiled Labels To Annotation”(如圖5)。該工具能夠按照地圖切片時使用的“超大切片”范圍計算標注的位置,所以通過該工具計算的Annotation 中的標注要素范圍能夠與地圖切片上的標注完全重合。但是在使用該工具前需要提供切片的分塊方案(Polygon Index Layer)。
圖5
2.2、生成切片地圖的分塊方案
切片地圖的分塊方案是切片地圖中每一塊切片所表示的地理范圍,是一組矩形的面要素。在ArcMap中可以通過工具“Map Server Cache Tiling Scheme To Polygons”(圖6)生成分塊方案。利用該工具,我們可以獲取地圖服務的每塊切片的地理范圍面要素所組成的 Feature Class。而該 Feature Class 就是“Tiled Labels To Annotation”工具所需要的分塊方案。
圖6
2.3、生成不同地圖切片等級下的 Annotation
通過上述 2.1 與 2.2 的步驟,只能生成地圖切片某一級別下的 Annotation 圖層,但地圖放大或縮小后,隨着地圖切片標注的變化,需要有不同的 Annotation圖層配合當前地圖切片等級使用。可以通過重復 2.1 與 2.2 的步驟生成不同地圖切片等級下的 Annotation。
2.4、在地圖應用中使用 Annotation實現活動地圖標注
將上述的 Annotation 圖層發布為地圖服務,在 web 應用中新增對應的FeatureLayer,設置FeatureLayer的數據源為 Annotation 圖層的地圖服務,並將FeatureLayer的 symbol設置為透明。並通過設置FeatureLayer的Infotemplate與鼠標響應事件處理函數,就能在基於 ArcGIS Server 的地圖應用中實現具有不同功能的活動地圖標注(圖7)。
圖7