天天看點

資料表格輕按兩下,根據geometry實作地圖定位功能

擷取geometry傳入函數drawGraphic中:
function drawGraphic(geometry){
require([
		"esri/graphic","esri/symbols/SimpleLineSymbol","esri/symbols/SimpleFillSymbol","dojo/colors",
		"esri/toolbars/draw","esri/symbols/SimpleMarkerSymbol"
	],function (Graphic,SimpleLineSymbol,SimpleFillSymbol,Color,Draw,SimpleMarkerSymbol) {
		//根據geometry生成圖形graphic
		/*
		下面的代碼都是已經封裝好的,自己寫的話按照下面的步驟寫就可以
		var map = new Map("mapDiv"); mapDiv:Container id for the referencing map,存放地圖的容器,已封裝好,top.window.mainMap就是map
		建立用戶端圖層
		var graphicsLayer=new GraphicsLayer();已封裝好,top.window.mainMap.graphics就是graphicsLayer
		将用戶端圖層添加到地圖中
		map.addLayer(graphicsLayer);架構中已經封裝添加過了,不再需要這一步
		*/
		//定義線符号
		var lineSymbol=new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new Color([255, 0, 0]), 3);
		//定義點符号
		var pSymbol=new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE,10, lineSymbol, new Color([255, 0, 0]));
		//定義面符号
		var fill=SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol,  new Color([255, 0, 0]));
		//定義圖形
		var graphic;
		var type = geometry.type;
		switch(type){
			case "point":
				graphic=new Graphic(geometry,pSymbol);
				break;
			case "polyline":
				graphic=new Graphic(geometry,lineSymbol);
				break;
			case "polygon":
				graphic=new Graphic(geometry,fill);
				break;
		}
		//将圖形添加到圖層中
		top.window.mainMap.graphics.add(graphic);


		//在地圖上繪制圖形
		//建立繪圖對象
		var toolbar = new Draw(top.window.mainMap, { showTooltips: true });
		//激活繪圖工具
		switch(type){
			case "point":
				//激活繪圖工具(畫點)
				toolbar.activate(Draw.POINT, {
					showTooltips:true
				})
				break;
			case "polyline":
				//激活繪圖工具(畫折線)
				toolbar.activate(Draw.POLYLINE, {
					showTooltips:true
				})
				break;
			case "polygon":
				//激活繪圖工具(繪制面)
				toolbar.activate(Draw.POLYGON, {
					showTooltips:true
				})
				break;
		}

        //top.window.mainMap就是map
		top.window.mainMap.graphics.add(graphic);
		//關掉繪圖工具
		toolbar.deactivate();

		//繪制的圖形居中顯示
		top.window.mainMap.setExtent(geometry.getExtent().expand(2));

	})
}