(转)MapX Mobile开发总结

 

电子地图设计总结1:
1,在MapX中,每张单独的地图都被表示成单独的一个图层,所有的图层存储在layers集合中。Layers集合由Layer对象组成,按顺序编号为0到n。Layer对象由features对象组成,features对象又是由Feature对象组成,对应于地图中的点、线、区域或符号。
最上面一层为Layers(1),Layers(2)位于Layers(1)的下面,以次类推。最下面的图层最先绘制,最上面的图层最后绘制。在应用程序中,合理地安排好每层在Layers中的顺序是至关重要的。比如说有两个图层,一层为点,一层为区域,则应将点层放到区域层的上方,否则区域会将点覆盖。
另外,在进行地图选择操作时,根据要求调整图层的顺序也是十分重要的。MapX中的选择工具总是从可选择图层中的最上层开始选择,如果在地图上的同一位置存在多个位于不同层的地图对象,其结果是很难精确地选择到目标对象。因此,最好将被选择图层提到最上层显示。

2,MapX控件使用过程中,应先将MapX5.0的安装目录下的sample->C++下的MAPX.H和MAPX.CPP拷贝到程序目录底下,在对话框中点右键插入ActiveX控件,避免采用project->add component控件的方式,这样加载后的类成员函数不全。将Map对象与某一变量关联的方法为在Dlg的DoDataExchange函数中插入DDX_Control(pDX,IDC_MAP1,m_mapx);

3,MapX Mobile显示中文地图问题.首先,到微软官方网站下载Windows Mobile 2003 Second Edition Emulator Images for Pocket PC - CHS.msi,安装后即可显示中文PPC环境.MapX Mobile-5.05默认的X86环境安装setup_x86.bat好像只适合PPC2003,打开EVC,选择Tool->Remote file viewer将X86底下所有文件复制到PPC上的Program Files->MapInfo->MapX Mobile下,再将本目录system->fonts复制到PPC->windows->fonts目录下,system 底下的几个dll文件复制到windows目录下.在EVC文件夹中找出一个6KB的regsvrce.exe复制到PPC上,运行它分别注册mapx50.dll,msafearraydataset.dll,mapxadods.dll,再打开EVC的Remote Registry Editor创建STRING key HKEY_LOCAL_MACHINE->Software->MapInfo->MapX Mobile->5.0->Geodictionary=->My Documents->Maps->,至此注册完成.将你所需要的地图全部文件移植到Maps目录下即可正常显示中文地图.

MapX Mobile开发总结二
如何将在ARM开发板上建立MapX Mobile环境
1,通过wince PB建立自己的wince环境,包含MFC库,HID USB键盘和鼠标支持,数据传输采用Microsoft ActiveSync。

2,在Visual Tools中通过depends工具得到MapX50.dll依赖库,主要是mfcce300.dll,这个库典型目录是在C:->Program Files->windows CE Tools->wce420->POCKET PC 2003->MFC->Lib->armv4下.将这个库复制到CE平台上的->Program Files->MapInfo->MapX Mobile目录下,并将MapX Mobile->target->arm->所有文件复制到该目录下。

3,将aygshell.dll,Doclist.dll,mfcce300.dll,note_prj.dll,olece300.dll复制到ce平台上的windows目录下。这是在ce4.0上模拟PPC环境的关键步骤。

4,运行EN_WINCE_EMBDVTOOLS30->DISK2->POCKTSDK->Program Files->TARGET->ARM->下的regsvrce.exe分别注册MapX50.dll mapxadods.dll,msafearraydataset.dll(前几步文件正确的话,这三个文件应该能得到顺利注册)。

5.打开EVC的Remote Registry Editor创建STRING key HKEY_LOCAL_MACHINE->Software->MapInfo->MapX Mobile->5.0->Geodictionary=->My Documents->Maps->,至此注册完成.将你所需要的地图全部文件移植到Maps目录下即可正常显示中文地图.

6,在->Program Files->MapInfo->MapX Mobile运行GeodictionaryManager50注册地图

机器不知道为什么这几天连接不上开发板了,所以第5步的注册只能是人工注册了

注册代码如下:

void CRegeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString str_ip(_T("->My Documents->Maps->"));
HKEY hKEY;
long result;
//打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。
long ret0=RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("->Software->MapInfo->MapX Mobile->->5.0"),0,_T("REG_SZ"),0,0,NULL,&hKEY,(unsigned long *)&result);
if(result==REG_CREATED_NEW_KEY)
{
MessageBox(_T("创建!"));
}
if(result==REG_OPENED_EXISTING_KEY)
{
MessageBox(_T("打开!"));
}
//long rect0 = (::RegCreateKeyEx(HKEY_LOCAL_MACHINE,
// data_Set,0,_T("REG_DWORD"),0,0,NULL,&hKEY,CheckExit));

if(ret0!=ERROR_SUCCESS)
{
MessageBox(_T("错误: 无法创建!"));
return;
}
//strip=(_T("->My Documents->Maps->"));
char lpb[30];
for(int i=0;i<str_ip.GetLength();i++)
*(lpb+i) = (str_ip.GetAt(i));
lpb[i++]='->0';
DWORD type=REG_SZ;
DWORD cbData_1=str_ip.GetLength()+1;
long ret1=(::RegSetValueEx(hKEY, _T("Geodictionary"), 0,REG_SZ, (BYTE *)lpb, 30));
if(ret1!=ERROR_SUCCESS)
{
MessageBox(_T("错误: 无法修改有关注册表信息!"));
return;
}
RegCloseKey(hKEY);
RegFlushKey(HKEY_LOCAL_MACHINE);
}

void CRegeDlg::OnButton2()
{
// TODO: Add your control notification handler code here
CString strText;
HKEY hKey = NULL;
DWORD dwDisp;
DWORD dwType;
char a[30];
int nValueLen = MAX_PATH;
if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("->Software->MapInfo->MapX Mobile->->5.0"),0,KEY_READ,&hKey))
{
MessageBox(_T("未注册!"));
}
if(ERROR_SUCCESS != RegQueryValueEx(hKey, _T("Geodictionary"), 0, &dwType, (unsigned char *)a, (unsigned long *)&nValueLen));
{
if (REG_SZ==dwType)
{
MessageBox(_T("REG_SZ!"));
}
MessageBox(CString(a));
}
strText.ReleaseBuffer();
RegCloseKey(hKey);
}

原文:http://alan108.itpub.net/post/7849/275050

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值