目的

这周六我要出去一趟,确保小伙伴的安全,但我想保证自己的安全,能让别人时刻知道我的具体位置

方案一:通过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 )

关于实现手机定位,通过服务器,再发送给查询者,或指定人相关推荐

  1. 请开启微信或者手机定位服务器,微信在哪里设置定位(微信开启定位功能设置)...

    微信在哪里设置定位(微信开启定位功能设置)微信是一个提供公众平台,朋友圈消息,推送等功能的免费应用程序.爱玩手机的人基本上都下载了微信作为通讯的工具.不仅可以视频打电话,发信息,还隐藏了很多便利生活的 ...

  2. 手机里的PDF文件如何加密后再发送给别人呢?

    在日常工作或学习中,有一些比较重要的PDF文件需要发给其他人,又担心发送过程中丢失或泄露,需要给文件进行加密处理,那么有什么方法可以给手机PDF文件加密然后再发送给别人呢? 1.文件加密 手机下载和安 ...

  3. 游戏的革命:手机定位游戏

    电子游戏的进行方式 一旦提起电子游戏,任何人脑海中总会产生这样一系列的景象. 镜头一:一个小男孩盘腿坐在地板上,手中拿着个手柄,目不转睛的地盯着电视机屏幕,随着屏幕中人物的前后跑动,孩子的身体甚至还会 ...

  4. qq不能发说说显示服务器错误,qq为什么发送不成word服务器拒绝发送离线请求. - 卡饭网...

    qq服务器拒绝发送离线文件怎么办 qq服务器拒绝发送离线文件怎么办 qq服务器拒绝发送离线文件怎么办 服务器拒绝了您发送离线文件的原因: 第一种:传输文件容量超过限制;实际上所有的普通QQ用户都可用使 ...

  5. 大规模手机定位采集系统设计

    一.业务场景分析 基本的业务需求可分为两大部分,第一部分是手机端间隔一定时间上报一次位置信息,第二部分是后台系统可以实时看看手机设备当前所在的位置,并绘制轨迹. 总之就是用户安装了此应用,就相当于给自 ...

  6. 安卓_手机卫士_第五天(手机定位,设备管理器,电话归属地)

    安卓手机卫士第五天(手机定位,设备管理器,电话归属地) 手机定位 网络定位 根据IP显示具体的位置, 原理是建立一个库那个IP地址对应那个地方:早期警方破案就采用此特点:纯真IP数据库软件介绍有局限性 ...

  7. 魅蓝手机显示无服务器,魅蓝手机网速显示设置(魅蓝2)

    魅蓝e手机网速显示设置 魅蓝E手机网速显示在手机设置的"通知和状态栏"里进行设置.操作步骤:1. 在手机桌面点击"设置".2. 点击"通知和状态栏&q ...

  8. 老司机揭秘手机定位技术,实在是精彩!

    本文来源于鲜枣课程 今天我们所处的移动互联网时代,手机成了每个人的生活标配. 这些手机里,安装了形形色色的APP,提供了各种服务,彻底改变了我们的生活. 这些服务里面,就包括我们今天的主角--定位. ...

  9. 58显示服务器异常怎么回事,手机登录云服务器异常

    手机登录云服务器异常 内容精选 换一换 使用MSTSC方式登录Windows云服务器时,系统报错提示"内部错误".在本地主机以管理员身份运行cmd.执行netsh winsock ...

最新文章

  1. PAT - L1-020. 帅到没朋友(裸并查集)
  2. java enum变量_java enum
  3. 7-27 冒泡法排序 (C语言)
  4. Android setOnPageChangeListener 过时了怎么办?
  5. linux 生成随机数命令
  6. 免费的SEO工具软件大全
  7. linux--命令rcp和scp
  8. eclipse中添加aptana插件(html.css.js自动提示)
  9. JAVA 连等赋值问题
  10. 推荐一款好用的加密软件 filepackage 文件加密 U盘加密 移动硬盘加密
  11. 火力发电计算机控制参数详细过程,火力发电过程
  12. 【信息学奥赛一本通】题解目录
  13. 硬件工程师的面试问题
  14. 16S rRNA全长测序揭示中国重度污染河口细菌群落的时空动态
  15. 基于字的二元模型拼音输入
  16. 反相放大电路反馈电阻上并联电容的作用 [转载]
  17. java des ecb_java DES ECB模式对称加密解密
  18. (亲自整理)如何让你的C盘立马多出来20G空间
  19. 小白学Python ——day7
  20. 【UCOSii源码解析】任务间通讯与同步

热门文章

  1. 50行Python代码,一键获取微博热点!
  2. 2021-2026年中国数字化转型市场预测:通过应用场景践行数字化优先策略
  3. neovim安装 vim-plug插件管理器安装
  4. 计算机批量制作邀请函步骤,如何利用Word批量制作邀请函
  5. echarts3.0 markline 最大值 最小值 均值 方差 标准差 包络 正态分布
  6. Linux常用命令——最详细!!!!
  7. html5绘制渐变图形-线性渐变
  8. 老梁情商课-拒绝是战术不是艺术
  9. 使用Autoit3 自动登录163邮箱
  10. AutoCAD颜色索引表与RGB颜色的对照表