Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 250, 文章 - 0, 评论 - 196, 引用 - 0
数据加载中……

BREW平台上如何通过GPS设备获取经纬度

 

  1 typedef struct _App {
  2  AEEApplet      a ;        // First element of this structure must be AEEApplet
  3  AEEDeviceInfo  DeviceInfo; // always have access to the hardware device information
  4  Common common;
  5  // add your own variables here
  6  
  7 //有关GPS的变量
  8  IPosDet* posdet;
  9  AEEGPSInfo gpsinfo; 
 10 
 11  char latchar[64];
 12  char lonchar[64];
 13 
 14 } App;
 15 
 16 
 17 //GPS
 18 static void GetGPS(App* app);
 19 static void OnGPSNotify(App* app);
 20 
 21 //初始化GPS相关的变量
 22 static boolean OnAppStart(App* app)
 23 {
 24  IDisplay* display = app->a.m_pIDisplay;
 25  IShell* shell = app->a.m_pIShell;
 26 
 27  app->posdet = NULL;
 28  ISHELL_CreateInstance(app->a.m_pIShell, AEECLSID_POSDET, (void**)&app->posdet);
 29 
 30  return TRUE;
 31 }
 32 
 33 //获取GPS
 34 static void GetGPS(App* app)
 35 {
 36  int ret;
 37  char buffer[80];
 38 
 39 
 40  CALLBACK_Init(&app->callback, (PFNNOTIFY)OnGPSNotify, (void*)app);
 41 
 42  ret = IPOSDET_GetGPSInfo(app->posdet, AEEGPS_GETINFO_LOCATION, AEEGPS_ACCURACY_LEVEL6, &app->gpsinfo, &app->callback);
 43  switch (ret) {
 44   case EPRIVLEVEL:
 45    STRCPY(buffer, "EPRIVLEVEL");
 46    break;
 47 
 48   case EBADPARM:
 49    STRCPY(buffer, "EBADPARM");
 50    break;
 51 
 52   case EUNSUPPORTED:
 53    STRCPY(buffer, "EUNSUPPORTED");
 54    break;
 55 
 56   case EFAILED:
 57    STRCPY(buffer, "EFAILED");
 58    break;
 59 
 60   case SUCCESS:
 61    STRCPY(buffer, "SUCCESS");
 62    break;
 63 
 64   default:
 65    STRCPY(buffer, "DEFAULT");
 66    break;
 67  }
 68 
 69  if (ret != SUCCESS)
 70  {
 71   CALLBACK_Cancel(&app->callback);
 72  }
 73  return;
 74 }
 75 
 76 //GPS的回调函数
 77 static void OnGPSNotify(App* app)
 78 {
 79  char szLat[32= {0};
 80  char szLon[32= {0};
 81  char szBuf[64= {0};
 82  AECHAR latwchar[64= {0};
 83  AECHAR lonwchar[64= {0};
 84 
 85  double lat = 0;
 86  double lon = 0;
 87 
 88  char m_gURL[256= {0};
 89  
 90  int pnInLen = 0;
 91 
 92  MEMSET(app->latchar,0,64);
 93  MEMSET(app->lonchar,0,64);
 94  
 95 
 96  lat = WGS84_TO_DEGREES(app->gpsinfo.dwLat);
 97  lon = WGS84_TO_DEGREES(app->gpsinfo.dwLon);
 98  FLOATTOWSTR(lat, latwchar, 64);
 99  FLOATTOWSTR(lon, lonwchar, 64);
100  WSTRTOSTR(latwchar, app->latchar, 64);
101  WSTRTOSTR(lonwchar, app->lonchar, 64);
102 
103 
104   SPRINTF(szLat, "Latitude(纬度) = %d", app->gpsinfo.dwLat);
105 
106  SPRINTF(szLon, "Longitude(经度) = %d", app->gpsinfo.dwLon);
107 
108 
109  switch (app->gpsinfo.status) {
110   case AEEGPS_ERR_NO_ERR:
111    STRCPY(szBuf, "SUCCESS !");
112    break;
113 
114   case AEEGPS_ERR_GENERAL_FAILURE:
115    STRCPY(szBuf, "AEEGPS_ERR_GENERAL_FAILURE");
116    break;
117 
118   case AEEGPS_ERR_TIMEOUT:
119    STRCPY(szBuf, "AEEGPS_ERR_TIMEOUT");
120    break;
121 
122   case AEEGPS_ERR_ACCURACY_UNAVAIL:
123    STRCPY(szBuf, "AEEGPS_ERR_ACCURACY_UNAVAIL");
124    break;
125 
126   case AEEGPS_ERR_INFO_UNAVAIL:
127    STRCPY(szBuf, "AEEGPS_ERR_INFO_UNAVAIL");
128    break;
129 
130   default:
131    STRCPY(szBuf, "DEFAULT");
132    break;
133  }
134  return;
135 }

posted on 2010-04-05 00:11 Benjamin 阅读(1299) 评论(8)  编辑 收藏 引用 所属分类: 其他手机平台

评论

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

请问保存为什么格式的文件能够在手机上运行啊?感谢
2010-05-20 10:38 | 小雷

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

bmp
2010-05-20 12:23 | Benjamin

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

bmp是图像格式啊,晕,指点一下咯,复制到记事本里面保存为什么格式能够在手机里面用,或者怎么样操作能够在手机里面用,麻烦详细一点,感谢
2010-05-21 12:52 | 小雷

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

获取经纬度后,然后在利用这个经纬度向谷歌发送get请求,获得的数据保存成bmp格式的图片就行。不过怎样向谷歌发请求,这个算法稍微有些复杂,要拼URL,而且就是这样获取的图片也不是最终的图片,如果想要让图片显示正确,必须要发多次请求才可以。而且请求下的图片,还要经过一定的算法将这几个图片拼成一个图片,这个过程大致就是这样的;获取经纬度或的操作比较复杂@小雷
2010-05-21 14:00 | Benjamin

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

怎么样在手机上运行啊,大哥
2010-05-21 22:07 | 小雷

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

现在代码是在网页上,怎么样在手机里面运行啊,大哥
2010-05-21 22:13 | 小雷

# re: BREW平台上如何通过GPS设备获取经纬度[未登录]  回复  更多评论   

@小雷
别问那么傻的问题。
2011-08-15 15:37 | R

# re: BREW平台上如何通过GPS设备获取经纬度  回复  更多评论   

你好,首先感谢楼主分享的源码
我在使用源码的时候 总是在回调函数里面出现
case AEEGPS_ERR_GENERAL_FAILURE: 错误,请问楼主指点一下迷津。我的QQ253320465
2013-03-08 20:43 | 我很笨

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理