我的 MapX 地图是通过CAD转换得来的..
  因为要使用非地球坐标,我用的投影是 non-earth(memter) 1.但是它的坐标地图正中点为原点, 怎么改变原点位置? 2.我自己用CoordSys另外设置过坐标, 但坐标还是以正中为原点, 而且坐标值变的很大了, 没设之前是-0.001245, 设置之后变成了 -3521.00 
                                  请各位大哥指教。。

解决方案 »

  1.   

    参考:
    int CMyGIsView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;// create map with default size
    // resize message will cause it to be
    // size to the client area of the view
    m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(0,0,100,100), this, IDC_MAP);
    m_ctrlMapX.SetGeoSet("Mygst.gst");//-------以下代码设置nonearth(meters)坐标系-------------
    CMapXRectangle Rect;
    CMapXCoordSys CurrentCoordsys;
    COptionalVariant vEmpty; 
    VARIANT MapUnit,MapBounds;
    if(!Rect.CreateDispatch(Rect.GetClsid()))
    {
    TRACE0("Could not Create object"); 

    if(!CurrentCoordsys.CreateDispatch(CurrentCoordsys.GetClsid())) {
    TRACE0("Could not Create object"); 

    try { 
    MapUnit.vt=VT_I4;
    MapUnit.lVal=miUnitMeter; 
    //设置坐标范围(MBR).为求一致,这里取当GeosetManager中设置为non-earth(meters)时,
    //gst文件中的参数"\GEOSET\MBR\LOWERLEFT" ,"\GEOSET\MBR\UPPERRIGHT"。
    Rect.Set(-2165.540090678837, 9841.99939777,46782.41871417205,41026.85331473999);MapBounds.vt=VT_DISPATCH;
    MapBounds.pdispVal=Rect.m_lpDispatch;
    MapBounds.pdispVal->AddRef(); 
    CurrentCoordsys.Set(0, vEmpty,MapUnit, vEmpty, vEmpty, vEmpty,vEmpty, vEmpty, vEmpty, vEmpty, vEmpty, vEmpty,MapBounds, vEmpty);
    m_ctrlMapX.SetNumericCoordSys(CurrentCoordsys.m_lpDispatch);
    m_ctrlMapX.SetDisplayCoordSys(m_ctrlMapX.GetNumericCoordSys().m_lpDispatch); } catch (COleDispatchException *e) {
    e->ReportError();
    e->Delete(); 
    } catch (COleException *e) {
    e->ReportError();
    e->Delete();
    }
    //------------------------------------------------return 0;
    }