This document is archived and information here might be outdated. Recommended version. |
ArcObjects namespaces > Carto > ESRI.ArcGIS.Carto > Interfaces > IM > IMapServer2 Interface > IMapServer2.FromMapPoints Method (ArcObjects .NET 10.4 SDK) |
Converts a map coordinate to a screen location.
[Visual Basic .NET] Public Sub FromMapPoints ( _ ByVal MapDescription As IMapDescription, _ ByVal mapDisplay As IImageDisplay, _ ByVal mapPoints As IPointCollection, _ ByRef screenXValues As ILongArray, _ ByRef screenYValues As ILongArray _ )
[C#] public void FromMapPoints ( IMapDescription MapDescription, IImageDisplay mapDisplay, IPointCollection mapPoints, ref ILongArray screenXValues, ref ILongArray screenYValues );
[C++]
HRESULT FromMapPoints(
IMapDescription* MapDescription,
IImageDisplay* mapDisplay,
IPointCollection* mapPoints,
ILongArray** screenXValues,
ILongArray** screenYValues
);
[C++]
Parameters MapDescription [in]
MapDescription is a parameter of type IMapDescription mapDisplay [in]
mapDisplay is a parameter of type IImageDisplay mapPoints [in]
mapPoints is a parameter of type IPointCollection screenXValues [in, out]
screenXValues is a parameter of type ILongArray screenYValues [in, out]
screenYValues is a parameter of type ILongArray
The following sample code shows how to convert the upper left corner of your map extent (map coordinates) to a screen location. It assumes that you already have a valid MapServer and MapDescription object, and that you are not working with a server context. However, if you are developing an ArcGIS for Server application using a server context, you should not use New to create local ArcObjects, but you should always create objects within the server by calling CreateObject on IServerContext.
IMapServer mapServer;
IMapDescription mapDesc;
// create image display
IImageDisplay imageDisp=new ImageDisplayClass();
imageDisp.Height=400;
imageDisp.Width=600;
// Get map coordinates (upper left corner of map extent)
IEnvelope extent=m_MapDesc.MapArea.Extent;
IPoint point=new PointClass();
point.X=extent.XMin;
point.Y=extent.YMax;
// add point to point collection
IPointCollection pointCollection=new MultipointClass();
System.Object pMissing=System.Reflection.Missing.Value;
pointCollection.AddPoint(point, ref pMissing, ref pMissing );
// Convert map coordinates to screen location
ILongArray screenXValues=new LongArrayClass ();
ILongArray screenYValues=new LongArrayClass ();
mapServer.FromMapPoints(mapDesc, imageDisp, pointCollection, ref screenXValues, ref screenYValues);
// Please note:
// 1. Origin of screen coordinate system is upper left corner
// 2. If aspect ratio of requested image is different from aspect
// ratio of input map, map extent will be adjusted to fit
// requested image -> following screen coordinates are not necessarily 0:
MessageBox.Show(screenXValues.get_Element(0).ToString());
MessageBox.Show(screenYValues.get_Element(0).ToString());