微信开发在 LBS位置定位的存在问题,位置变化了或者重新存入地址后,系统提供的位置还是以前的位置记录。所以改进位置信息存取的方式。
1.位置定位的数据库表
CREATE TABLE IF NOT EXISTS `user_location` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'user_location id',
`open_id` varchar(128) NOT NULL COMMENT 'user_location 用户的OpenID',
`lng` varchar(30) NOT NULL COMMENT 'user_location lng',
`lat` varchar(30) NOT NULL COMMENT 'user_location lat',
`bd09_lng` varchar(30) DEFAULT NULL COMMENT 'user_location bd09_lng',
`bd09_lat` varchar(30) DEFAULT NULL COMMENT 'user_location bd09_lat',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='user_location' AUTO_INCREMENT=7 ;
2.存在问题
user_location存入位置信息后,系统使用时获取的都是表中的第一条记录。所以改进表为:
CREATE TABLE IF NOT EXISTS `user_location` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'user_location id',
`open_id` varchar(128) NOT NULL COMMENT 'user_location 用户的OpenID',
`lng` varchar(30) NOT NULL COMMENT 'user_location lng',
`lat` varchar(30) NOT NULL COMMENT 'user_location lat',
`bd09_lng` varchar(30) DEFAULT NULL COMMENT 'user_location bd09_lng',
`bd09_lat` varchar(30) DEFAULT NULL COMMENT 'user_location bd09_lat',
`time` varchar(128) DEFAULT NULL COMMENT 'user_location time',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='user_location' AUTO_INCREMENT=1 ;
增加:time 字段
3.获取位置信息每次取记录中时间最大的记录。
String sql = "select open_id, lng, lat, bd09_lng, bd09_lat <pre code_snippet_id="674520" snippet_file_name="blog_20150525_3_5090141" name="code" class="sql"> from user_location where open_id=? order by time desc limit 0,1";
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">order by time desc limit 0,1 是按时间降序排列,取一条记录</span>
order by time desc 是按时间降序排列(最大值记录在第一条)
limit 0,1取一条记录
4.效果图见 生活助理-周边搜索