关于实现手机定位,通过服务器,再发送给查询者,或指定人
目的:
这周六我要出去一趟,确保小伙伴的安全,但我想保证自己的安全,能让别人时刻知道我的具体位置
方案一:通过ip定位
使用 :
1. python2.7
2. pip install geoip2
3. 再去http://dev.maxmind.com/geoip/geoip2/geolite2下载city的db
不足:
ip唯一,子网没办法查到
效果:
这是我手机的ip地址 我在济宁 定位到北京....
源码:
#-*-coding:utf-8-*-
import geoip2.database
reader = geoip2.database.Reader('C:\\study\\location\\GeoLite2-City.mmdb')
#ip = raw_input("输入你要查询的IP:")
response = reader.city('218.92.225.159')# 有多种语言,我们这里主要输出英文和中文print("你查询的IP的地理位置是:")
try:
print(u"地区:{}({})".format(response.continent.names["es"],
response.continent.names["zh-CN"]))
except:
print()
try:
print(u"国家:{}({}) ,简称:{}".format(response.country.name,
response.country.names["zh-CN"],
response.country.iso_code))
except:
print()
try:
print(u"洲/省:{}({})".format(response.subdivisions.most_specific.name,
response.subdivisions.most_specific.names["zh-CN"]))
except:
print()
try:
print(u"城市:{}({})".format(response.city.name,
response.city.names["zh-CN"]))
except:
print()
try:
print(u"经度:{},纬度{}".format(response.location.longitude,
response.location.latitude))
except:
print()
try:
print(u"邮编:{}".format(response.postal.code))
except:
print()
#print(u"时区:{}".format(response.location.time_zone))
方案二:
通过百度api获得当前位置 需要事先知道经纬度 获得一个地图
灵感:
突然想到和同学暑假做的一个安卓,她负责百度定位,当时用的就是百度API,并没有输入经纬度,或许我该去看看百度API的官网了
源码:
<!DOCTYPE html>
<html>
<title>HTML5调用百度地图API进行地理定位实例</title>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=xxx"></script>
</head>
<body style="margin:50px 10px;">
<div id="status" style="text-align: center"></div>
<div style="width:600px;height:480px;border:1px solid gray;margin:30px auto" id="container"></div>
<script type="text/javascript">
//默认地理位置设置为曲师大
var x=116.96256,y=35.59329;
window.onload = function() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
document.getElementById("status").innerHTML = "HTML5 Geolocation is supported in your browser.";
// 百度地图API功能
var map = new BMap.Map("container");
var point = new BMap.Point(x,y);
map.centerAndZoom(point,12);
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
alert(r.point.latitude);
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true});
return;
}
alert("你的浏览器不支持获取地理位置!");
};
function showPosition(position){
x=position.coords.latitude;
y=position.coords.longitude;
}
</script>
</body>
</html>
方案三: 网页获取地址 并实时展示地图,将经纬度传到服务器的文件中,地图10分钟左右刷新一次,本来想再写个功能,能让别人查看我的位置,因为太饿了 不想写了
对我来说最大的困难在于 ajax不会,json没接触过,所以浪费在这两个上面的时间也最长
loc.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=dKkaAiL0OANV5xG4sCbFpBOdqOhex1jq"></script>
<title>浏览器定位</title>
</head>
<body>
<div id="allmap"></div>
<!--发现问题
1. 百度api定位与web定位的地址不同,如果要在百度地图精准显示,需要经过坐标转换
2. 先弹出是否允许获得当前坐标 如果不点击 一会自动弹出您的坐标为... 点击之后才弹出 web定位
3. 搜索过程中出现 django
4. 将scripts中内容写入body中 有三种方式 学过jsp和document.write()
5. 精彩文章 https://zhuanlan.zhihu.com/p/24376846
6. 本来想通过将js数据写入表单 再自动提交表单到后台 现在发现可以直接将js提交后台....
-->
</body>
</html>
<script type="text/javascript">
var longitude,latitude;
navigator.geolocation.getCurrentPosition(function (position) {
longitude = position.coords.longitude;
latitude = position.coords.latitude;
});
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(longitude,latitude);
map.centerAndZoom(point,12);
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
r.point.lng='116.97710470620571';
r.point.lat='35.60307342340916';
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
locfun();
}
else {
}
},{enableHighAccuracy: true})
function locfun() {
var xmlhttp;
var loc = {
"longitude": longitude,
"latitude": latitude
};
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState===4 && xmlhttp.status===200)
{
}
};
xmlhttp.open("POST","/loc2",true);
xmlhttp.setRequestHeader("Content-type","application/json");
// 后面这两部很重要,我看网上很多都是使用xmlhttp.send("username="+username+"&password="+"),这样接收还要解析一番感觉还是直接发送以下格式的好些
var data_json = JSON.stringify(loc);
xmlhttp.send(data_json);
}
window.onload = function()
{
setTimeout("window.location.reload()", 500000);
}
</script>
loc_2.py:
# -*- coding: utf-8 -*-
import json
import socket
from flask import Flask
from flask import request
from flask import redirect
from flask import jsonify,render_template
app = Flask(__name__)
@app.route('/loc2' , methods=['GET', 'POST'])
def index():
if request.method == 'POST':
a = request.get_data()
dict1 = json.loads(a)
f=open("C:\\study\\location\\loc.txt","a+")
f.write(json.dumps(dict1["longitude"])+","+json.dumps(dict1["latitude"]))
f.write("\n")
f.close()
#print(dict1)
#return render_template('res.html',longitude=json.dumps(dict1["longitude"]),latitude=json.dumps(dict1["latitude"]))
elif request.method == 'GET':
a = request.get_data()
dict1 = json.loads(a)
f=open("C:\\study\\location\\loc.txt","a+")
f.write(json.dumps(dict1["longitude"])+","+json.dumps(dict1["latitude"]))
f.write("\n")
f.close()
#return render_template('res.html',longitude=json.dumps(dict1["longitude"]),latitude=json.dumps(dict1["latitude"]))
else:
return '<h1>no!</h1>'
@app.route('/loc')
def loc():
return render_template('loca.html')
if __name__ =='__main__':
hostname = socket.gethostname()
ip='0.0.0.0'
app.run( host=ip,port=5000,debug=False )
关于实现手机定位,通过服务器,再发送给查询者,或指定人相关推荐
- 请开启微信或者手机定位服务器,微信在哪里设置定位(微信开启定位功能设置)...
微信在哪里设置定位(微信开启定位功能设置)微信是一个提供公众平台,朋友圈消息,推送等功能的免费应用程序.爱玩手机的人基本上都下载了微信作为通讯的工具.不仅可以视频打电话,发信息,还隐藏了很多便利生活的 ...
- 手机里的PDF文件如何加密后再发送给别人呢?
在日常工作或学习中,有一些比较重要的PDF文件需要发给其他人,又担心发送过程中丢失或泄露,需要给文件进行加密处理,那么有什么方法可以给手机PDF文件加密然后再发送给别人呢? 1.文件加密 手机下载和安 ...
- 游戏的革命:手机定位游戏
电子游戏的进行方式 一旦提起电子游戏,任何人脑海中总会产生这样一系列的景象. 镜头一:一个小男孩盘腿坐在地板上,手中拿着个手柄,目不转睛的地盯着电视机屏幕,随着屏幕中人物的前后跑动,孩子的身体甚至还会 ...
- qq不能发说说显示服务器错误,qq为什么发送不成word服务器拒绝发送离线请求. - 卡饭网...
qq服务器拒绝发送离线文件怎么办 qq服务器拒绝发送离线文件怎么办 qq服务器拒绝发送离线文件怎么办 服务器拒绝了您发送离线文件的原因: 第一种:传输文件容量超过限制;实际上所有的普通QQ用户都可用使 ...
- 大规模手机定位采集系统设计
一.业务场景分析 基本的业务需求可分为两大部分,第一部分是手机端间隔一定时间上报一次位置信息,第二部分是后台系统可以实时看看手机设备当前所在的位置,并绘制轨迹. 总之就是用户安装了此应用,就相当于给自 ...
- 安卓_手机卫士_第五天(手机定位,设备管理器,电话归属地)
安卓手机卫士第五天(手机定位,设备管理器,电话归属地) 手机定位 网络定位 根据IP显示具体的位置, 原理是建立一个库那个IP地址对应那个地方:早期警方破案就采用此特点:纯真IP数据库软件介绍有局限性 ...
- 魅蓝手机显示无服务器,魅蓝手机网速显示设置(魅蓝2)
魅蓝e手机网速显示设置 魅蓝E手机网速显示在手机设置的"通知和状态栏"里进行设置.操作步骤:1. 在手机桌面点击"设置".2. 点击"通知和状态栏&q ...
- 老司机揭秘手机定位技术,实在是精彩!
本文来源于鲜枣课程 今天我们所处的移动互联网时代,手机成了每个人的生活标配. 这些手机里,安装了形形色色的APP,提供了各种服务,彻底改变了我们的生活. 这些服务里面,就包括我们今天的主角--定位. ...
- 58显示服务器异常怎么回事,手机登录云服务器异常
手机登录云服务器异常 内容精选 换一换 使用MSTSC方式登录Windows云服务器时,系统报错提示"内部错误".在本地主机以管理员身份运行cmd.执行netsh winsock ...
最新文章
- PAT - L1-020. 帅到没朋友(裸并查集)
- java enum变量_java enum
- 7-27 冒泡法排序 (C语言)
- Android setOnPageChangeListener 过时了怎么办?
- linux 生成随机数命令
- 免费的SEO工具软件大全
- linux--命令rcp和scp
- eclipse中添加aptana插件(html.css.js自动提示)
- JAVA 连等赋值问题
- 推荐一款好用的加密软件 filepackage 文件加密 U盘加密 移动硬盘加密
- 火力发电计算机控制参数详细过程,火力发电过程
- 【信息学奥赛一本通】题解目录
- 硬件工程师的面试问题
- 16S rRNA全长测序揭示中国重度污染河口细菌群落的时空动态
- 基于字的二元模型拼音输入
- 反相放大电路反馈电阻上并联电容的作用 [转载]
- java des ecb_java DES ECB模式对称加密解密
- (亲自整理)如何让你的C盘立马多出来20G空间
- 小白学Python ——day7
- 【UCOSii源码解析】任务间通讯与同步