1. 程式人生 > >ArcGIS API for Silverlight 查詢點聚焦的一個注意點

ArcGIS API for Silverlight 查詢點聚焦的一個注意點

主要的座標系有2種:

WKID=102100

WKID=4326

而且對於點來說,一個Geometry物件其Width和Height是0,這點需要特別注意。

            //座標點聚焦
            ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator();
            ESRI.ArcGIS.Client.Geometry.Envelope selectedFeatureExtent = mercator.ToGeographic(graphic.Geometry).Extent; //最後一個點的位置
            double expandPercentage = 30;

            double widthExpand = (selectedFeatureExtent.Width + 5) * (expandPercentage / 100);
            double heightExpand = (selectedFeatureExtent.Height + 5) * (expandPercentage / 100);
            ESRI.ArcGIS.Client.Geometry.Envelope displayExtent = new ESRI.ArcGIS.Client.Geometry.Envelope(
            selectedFeatureExtent.XMin - (widthExpand / 2),
            selectedFeatureExtent.YMin - (heightExpand / 2),
            selectedFeatureExtent.XMax + (widthExpand / 2),
            selectedFeatureExtent.YMax + (heightExpand / 2));
            myMap.ZoomTo(displayExtent);

double widthExpand = (selectedFeatureExtent.Width + 5) * (expandPercentage / 100);

注意這裡,給每個Width加上5,這樣就可以實現了。

設定座標系的方法:

 ESRI.ArcGIS.Client.Geometry.Envelope initialExtent =
                    new ESRI.ArcGIS.Client.Geometry.Envelope(
                _mercator.FromGeographic(
                    new ESRI.ArcGIS.Client.Geometry.MapPoint(-122.4545596, 37.783443296)) as MapPoint,
                _mercator.FromGeographic(
                    new ESRI.ArcGIS.Client.Geometry.MapPoint(-122.4449924, 37.786447331)) as MapPoint);

            initialExtent.SpatialReference = new SpatialReference(102100);  //WKID=4326

            MyMap.Extent = initialExtent;