项目实训-千寻-实时点对点地图
来源:互联网 发布:益思留学 知乎 编辑:程序博客网 时间:2024/05/29 16:56
两个用户之间,可以实时地查看两个人的相对位置,这就是实时点对点地图。
要实现这种地图,查了一下,没有发现有现成的工具可用,不过百度地图倒是有路线规划功能,可以考虑。这样的话,我们想,通过每隔几秒请求一次两个人的相对位置,然后使用百度地图的路线规划API,就可以做出两个人之间的实时点对点地图了。
每隔几秒请求一次,这样对于服务器的压力是很大的,因此我们想到了使用第三方即时通讯的方式。两个人通过即时通讯平台发送位置信息,从而缓解了我们的服务器压力,而且也有着非常高的稳定性,一举多得。
实现过程简介:
1.定义前缀常量
2.双方确认
实时地图是需要双方同时确认的,因为他是敏感位置信息的传输。
3.同步显示
要实现这种地图,查了一下,没有发现有现成的工具可用,不过百度地图倒是有路线规划功能,可以考虑。这样的话,我们想,通过每隔几秒请求一次两个人的相对位置,然后使用百度地图的路线规划API,就可以做出两个人之间的实时点对点地图了。
每隔几秒请求一次,这样对于服务器的压力是很大的,因此我们想到了使用第三方即时通讯的方式。两个人通过即时通讯平台发送位置信息,从而缓解了我们的服务器压力,而且也有着非常高的稳定性,一举多得。
实现过程简介:
1.定义前缀常量
public static final String MSG_HIDE_HEAD = "×_";// 所有隐藏头相关的起始标志(乘号,下划线)public static final String MSG_SHOW_HEAD = "_×";// 所有隐藏头相关的起始标志(乘号,下划线)public static final String MSG_HIDE_NULL = MSG_HIDE_HEAD + " ";//NULL:+两个全角空格public static final String MSG_MAP_SHOW = MSG_SHOW_HEAD+"show";// 消息中的地图显示public static final String MSG_MAP_SPLIT = "-";// 地图的分隔符public static final String MSG_MAP_REQUEST = MSG_HIDE_HEAD + "map_request_start";public static final String MSG_MAP_REQUEST_STOP = MSG_HIDE_HEAD+ "map_request_stop";public static final String MSG_MAP_REJECT = MSG_HIDE_HEAD + "map_reject";public static final String MSG_MAP_ONETIME = MSG_HIDE_HEAD + "map_onetime";// +x-ypublic static final String MSG_MAP_START = MSG_HIDE_HEAD + "map_start";public static final String MSG_MAP_RECEIVE = MSG_HIDE_HEAD + "map_receive";public static final String MSG_MAP_REALTIME = MSG_HIDE_HEAD + "map_realtime";// +x-y
2.双方确认
实时地图是需要双方同时确认的,因为他是敏感位置信息的传输。
public MapReceiveDialog(Context context) {super(context, "点对点地图");setText("\n对方发起点对点地图。\n是否同意对方获取您的位置?\n");setPositiveButton("允许", null);// 此处null即可setNegativeButton("拒绝", new DialogButtonListener() {public void onButtonClick() {cancelDialog();}});setCancelable(false);// 就放在这里}
3.同步显示
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 无标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);// 布局setContentView(R.layout.dialog_map_show);TextView tv_title = ((TextView) findViewById(R.id.top_text));tv_title.setText("点对点地图");showBackButton();// handlerinitHandler();// 获取地图控件引用(此处添加到xml中会报错)mMapView = new MapView(activity);mMapView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));((LinearLayout) findViewById(R.id.dia_map_show_layout)).addView(mMapView);mBaidumap = mMapView.getMap();// 显示指南针控件(此处必须先false再true)UiSettings mUiSettings = mBaidumap.getUiSettings();mUiSettings.setCompassEnabled(false);mUiSettings.setCompassEnabled(true);// 实时刷新显示用户位置update_running = true;startUpdateThread();}private void showMyLocation(double my_x, double my_y, float limit) {// 显示定位mBaidumap.setMyLocationEnabled(true);MyLocationData locData = new MyLocationData.Builder().accuracy(limit).direction(100).latitude(my_y).longitude(my_x).build();mBaidumap.setMyLocationData(locData);// 设置为中心点mBaidumap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(17.0f).build()));LatLng latlng = new LatLng(my_y, my_x);mBaidumap.animateMapStatus(MapStatusUpdateFactory.newLatLng(latlng));}
以上即为实现的基本过程。
阅读全文
0 0
- 项目实训-千寻-实时点对点地图
- 项目实训-千寻-服务端框架搭建
- 项目实训-千寻-服务端SSH框架完善
- 项目实训-千寻-即时通讯服务选择
- 项目实训-千寻-LBS派单逻辑
- 项目实训-千寻-分享与展示功能
- 项目实训-千寻-服务端图片处理优化
- 项目实训-千寻-服务端代码部署阿里云
- 项目实训-千寻-服务端代码集成测试
- 点对点视频实时传输
- 项目实训-千寻-登录注册与个人中心的实现
- 项目实训-千寻-MOB短信验证服务的引入
- 项目实训-千寻-支付宝服务申请与使用
- 项目实训-千寻-核心业务逻辑_需求发布与展示
- 项目实训-千寻-核心业务逻辑_业务流程处理
- 百度地图API 安卓项目 实时获取地图中心点经纬度
- JS TextBox 实时 千位分隔符
- 点对点
- Dockerfile中的Shell风格与JSON风格对比及SHELL指令详解
- java字符串操作:匹配、替换、萃取、分割拆分
- MySQL插入数据时中文乱码问题
- Leetcode 513. Find Bottom Left Tree Value
- linux根文件系统
- 项目实训-千寻-实时点对点地图
- JSP—一个简单的登录界面
- 【简记】Computer Networking——transport layer(tcp part)
- 【LeetCode】61. Rotate List
- Jquery实现简单的导航单并且经常使用
- Java单列集合总结
- 主题六 函数(C语言核心)----38.函数设计技巧
- 15、权限管理之文件系统属性chattr、以及sudo
- 流式计算storm,spark文章