我现在需要用eMbedded Visual Basic开发一个基于掌上电脑GPS应用程序,其中就包括是现在地图上的地位。我现在上有一幅很简单的地图,是普通的BMP图片,关于这幅地图的GPS参考点我已经找好了。现在需要将GPS坐标系和地图的平面坐标系建立起对应关系,这一步也不是很难。关键是如何根据GPS提供的经纬度在地图上找到用户当前位置。我开始想用eMbedded Visual C++做一个DLL程序,由eVB的主程序调用它。在DLL里面将BMP图像map.bmp的像素值读到一个数组pixel里面,然后将该地图分成若干(9x9)小图 (range)。每个range都有自己的GPS坐标(经纬度),同时也有平面坐标(由pixel数组的id划分)。通过逐个的比较range的GPS坐标,DLL程序找到其平面坐标id,在把以这个range为中心的相邻的9个range的全部pixel数组像素值写到一幅新的BMP图像show.bmp中去。最后我们只要在界面上显示show.bmp即可。这幅图像还能保证用户的位置始终在显示地图的中心,杜绝了所谓的边界效应的不便。但这样做实际操作起来并不太可行。首先是DLL读写图像用的C++函数GetPixel和SetPixel速度太慢了,跟不上地图刷新频率的需要。其次我还需要在现实的地图部分做一个小的图标标明用户在这幅地图上的具体位置,而且这一图标还能随着用户的移动而移动,VB里的paintpicture在eVB里还不支持,这一步我就实在不知道应该怎样弄了。请问哪位做过类似程序的开发,出来给讲讲地图地位算法及实现的问题,究竟要不要用DLL呢?还有像我这样的需求是不是一定要进行像素级的操作才能实现?有没有别的办法?能否仅有坐标来实现定位?地图如何处理?听说有一种做矢量地图的方法,不知是否适用?