精华内容
下载资源
问答
  • 怎么增加定位地址
    千次阅读
    2021-07-27 03:37:29

    与朋友在网络上互相传送资料时,有时候需先知道对方电子计算机的ip地址,才能与对方建立信息传送安全通道。

    那么对方的ip地址该如何收查得到呢?这样的问题你也许会不屑一顾,确实,查寻对方电子计算机的ip地址,确实简单得不不值一提;但是,要让你例举出多种多样ip地址收查方法时,你可能就感到勉为其难了。文中就对怎么才能、准确地收查出对方朋友的电子计算机ip地址,提出如下几类方法,相信能对大家有所帮助!

    1、邮件查询法

    使用这种方法查寻对方电子计算机的ip地址时,首先要求对方先给你发一封电子邮件,随后你可以通过查看该电子邮件属性的方法,来获得发送邮件者所属电子计算机的ip地址;下面就是该方法的落实措施步骤:

    首先运作OutLook express程序,并点击工具栏中的“接受所有电子邮件”按键,将朋友上传的电子邮件接受下来,再打开收件箱页面,找到朋友上传回来的电子邮件,合用鼠标点击点击之,从弹出来的右键菜单中,实行“属性”指令;在之后打开的属性设置对话框中,点击“基本资料”标识,并在打开的标识页面中,你将见到“Received:from xiecaiwen (unknown [11.111.45.25])”这样的信息,其中的“11.111.45.25”就是对方朋友的ip地址;当然,如果对方朋友通过Internet中的WEB邮箱给你上传电子邮箱的话,那么你一直在这里见到的ip地址其实并不是他所属服务中心的真实ip地址,而是WEB邮箱所属网站的ip地址。

    当然,如果你使用的是其他邮件客户端程序的话,查看发件人ip地址的方法可能与上面不一样;比如如果你使用foxmail来接受朋友电子邮件的话,那么你可以在收件箱中,选定目标电子邮件,再点击工具栏中的“电子邮件”选择项,从弹出来的下拉列表中选定“初始信息”指令,就能在之后的界面中见到对方朋友的ip地址了。

    2、系统日志查寻法

    这种方法是通过服务器防火墙来对QQ转账记录进行实时监控系统,随后打开服务器防火墙的系统日志记录,找到对方朋友的ip地址。为方便描述,文中就以KV2004服务器防火墙为例,来向大家介绍一下如何收查对方朋友的ip地址:

    充分考虑与朋友进行QQ闲聊是通过udp协议协议书进行的,因此你首先要设置好千伏服务器防火墙,让其自动监控器udp协议端口号,如果发现有数据从udp协议端口号进入的话,就将它记录器下来。在设置KV2004服务器防火墙时,先点击服务器防火墙界面中的“标准设置”按键,随后点击“在建标准”按键,弹出来设置对话框;在该对话框的“名字”文本框中输入“收查ip地址”,在“说明”文本框中也输入“收查ip地址”;再在“网络条件”设置项处,选定“接受数据文件”复选框,同时将“对方ip地址”设置为“任何详细地址”,而在“当地ip地址”设置项处不用进行任何设置;下面再点击“udp协议”标识,并在该标识页面下的“当地端口号”设置项处,选定“端口号范围”选择项,随后在起止框中输入“0”,在结束框中输入“65535”;同样地,在“对方端口号”设置项处,也选定“端口号范围”选择项,随后在起止框中输入“0”,在结束框中输入“65535”。

    处理”处的“记录”选择项选定,而“标准对象”设置项不用进行任何设置;完成了上面的所有设置后,点击“确定”按键,回到到服务器防火墙的主界面;再在主界面中选定刚刚建立好的“收查ip地址”标准,同时点击“储存”按键,将前边的设置储存下来。

    完成好上面的设置后,千伏服务器防火墙将自动对QQ转账记录进行全线监控器,如果对方朋友给你发过来QQ信息时,那么对方朋友的ip地址信息就会自动出现在服务器防火墙的系统日志文件中,这时你可以进入到千伏服务器防火墙的安装目录中,找到并打开“kvfwlog”文件,就能收查到对方朋友的ip地址。

    3、工具查寻法

    这种方法是通过专业的ip地址查寻工具,来快速收查到对方电子计算机的ip地址。比如,依靠一款名叫WhereIsIP的收查工具,你可以轻松根据对方朋友的web网址,收查得到对方朋友的ip地址,甚至还能收查到对方朋友所属的物理学位置。再用WhereIsIP程序收查对方ip地址时,首先起动该程序打开收查界面,随后点击该界面的“web site”按键,在之后的对话框中输入对方朋友的web详细地址,再点击“next”按键,这样该程序就能自动与Internet中的Domain Name Whois数据库查询联系,随后从该数据库查询中收查到与该web网址对应的ip地址了。当然,除了可以知道ip地址外,你要能知道对方朋友所属的具体物理学位置。

    假若要想查看内网中某个服务中心的ip地址时,可以使用“网络刺客装备II”这类的工具来帮助;如果你运作该工具进入到它的主界面,随后实行工具栏中的“ip地址主机名”指令,在之后打开的提示框中,输入对方朋友的电子计算机名字,再点击“转化成iP”按键,就能获得对方朋友所属电子计算机的ip地址了。

    如果你使用Oicqsniffer工具的话,那么查寻QQ朋友的ip地址就更简单了。如果你点击该程序界面中的“跟踪”按键,随后向对方朋友上传一条QQ信息,那么Oicqsniffer工具就会自动将对方朋友的ip地址以及服务器端口显示出来。此外,还有很多?梢运阉鱥p地址的专业?ぞ呖梢匝≡瘢热鏘Psniper软件。

    4、指令查寻法

    这种方法是通过Windows系统内嵌的网络命令“netstat”,来查出来对方朋友的ip地址,不过该方法想要你先想方法将对方朋友邀约到QQ的“两人世界”中说上几句话才可以。下面就是该方法的具体实现步骤:

    首先点击“开始”/“运作”指令,在弹出来的系统运作会话?蛑校淙搿癱md”指令,点击“确定”按键后,将显示屏转换到AS-DOS工作态度;随后在DOS命令行中实行“netstat -n”指令,在弹出来的界面中,你就能见到当前到底有哪些详细地址已经陪你的电子计算机建立了联接(如果对应某个联接的状态为“Established”,就说明你的电子计算机和对方电子计算机之间的联接是成功的);其次打开QQ程序,邀约对方朋友加入“两人世界”,并之中与朋友聊上一两句,这样你的电子计算机就会与对方朋友的电子计算机之间建立好啦TCP联接;这时,再在DOS命令行中实行“netstat -n”指令,看一下现在又增加了哪个tcp联接,那个新增加的联接其实就是对方朋友与你之间的udp协议联接,查看对应联接中的“Foreign Address”就能知道对方朋友的ip地址了。

    5、Ping检查法

    这种方法就是利用“ping”指令,来检查当前电子计算机是否能与对方朋友的网站连接,在检查的过程中该详细地址能自动获得对方网站的ip地址。比如说,如果你要收查赛迪网站的ip地址时,可以先打开系统的运作提示框,随后之中输入“ping WWW.chncto.Com”字符串指令,再点击“确定”按键,在弹出来的对话框中,就能知道网站的ip地址了。同样地,你也可以收查其他网站的ip地址。

    更多相关内容
  • jQuery百度地图API美团外卖配送地址定位代码,省市区得根据自身需求去增加
  • 一、高精准IP地址定位 IP地址定位技术,是通过设备的IP地址来确定其地理位置。近年来,IP地址定位技术受到越来越多的关注,随着互联网日新月异的发展,市场中的IP地址定位产品存在数据陈旧、定位颗粒度粗糙(仅...

    一、高精准IP地址定位

     

          IP地址定位技术,是通过设备的IP地址来确定其地理位置。近年来,IP地址定位技术受到越来越多的关注,随着互联网日新月异的发展,市场中的IP地址定位产品存在数据陈旧、定位颗粒度粗糙(仅能达到城市级别)等问题。即使近年来市场中出现了相比城市级别精度有所提升的IP地址定位产品,但仍无法充分满足市场中用户的需求。目前在互联网行业基于位置的服务已经成为趋势,基于地理位置的网络应用层出不穷,IP地址定位已广泛应用于网络安全、在线广告投放、在线安全支付、大数据分析、反欺诈风控、大数据征信等领域。高精准IP地址定位技术在互联网领域中越来越重要。许多研究机构和学者已围绕如何提升IP地址定位技术的定位精度、应用场景等不同问题进行了系统的研究。

     

    1、基于数据挖掘的方式

    ● 基于DNS. Davis等人提出了一种基于DNS的方法。这种方法在资源记录(Resource Record)中增加位置字段。然而,这种方式实施起来仍有一定难度。这是因为管理员对于修改或者更新资源记录缺乏动力。此外,研究人员表明DNS的错误命名是具有普遍性的,这种错误有可能将互联网的拓扑映射毁掉。

    ● 基于Whois. Moore等人指出,地理位置定位也可以通过挖掘Whois数据库获得。然而,正如作者自己指出的那样,大型的机构可以把它们的机器分散在不同地点,但是却把这些机器的地理位置注册在公司的总部位置。举一个例子,许多现有使用此方法的IP地址定位数据库都把Google分布在世界各地的服务器错误的定位到了Mountain View,加州,美国。

    ● 基于主机. 路由器的主机名有时可以暗示出机器的地理信息。Padmanabhan和 Subramanian的GeoTrack首先找到离被探测目标最近的路由器,然后从这个路由器的主机名上来判断出该接入路由器的位置。最终,GeoTrack认为路由器的位置信息即是被探测目标的位置信息。然而,这种方法受到多种因素的影响。第一,并不是所有的机器名称中都包含地理位置信息。其次,管理员可以非常有创意地来命名他们的机器,因此,从技术上来说,解析全部命名格式是十分困难的。再次,由于最后一跳路由器可能和目标主机相差很远,因此用最后一跳路由器的位置来替代目标主机的位置可能带来很大的错误。

    ● 基于Web. Guo等人的Structon,从Web网页中挖掘地理位置信息。尤其是Structon建立了一个地理定位表,并在一个非常大的数据集的每个网页页面上使用正则表达式提取地理位置信息。由于Structon不把他们发掘的基准点与延迟测量向结合,它只实现了较粗颗粒度的定位精度,如城市级别。他们从网页上提取所有与地理位置有关的信息,而不仅仅是邮政地址信息,而且对于一个网站,他们考虑这个网站域名下的所有网页所提供的地理位置信息。事实上,这种办法很容易出错。此外,把一个/24的IP段都考虑为同一个城市忽略了在这一个网段中IP地址的更细颗粒度的特点。由于Hosting即数据中心、网页地址不正确、traceroute经过的路由未知等因素,会有很大一部分IP地址无法定位或者定位错误,该方法要达到一个较高的精准度是很困难的。

    ● 其他来源. Padmanabhan和Subramanian的GeoCluster使用在BGP路由表中IP地址的前缀把IP地址首先聚成集群。此外,通过一些私有的资源,GeoCluster找到集群中部分IP地址的地理位置信息。这些私有资源有很多种,其中一个例子是用户在使用Hotmail服务时,登记自己的地理位置信息。最终,根据这些部分IP地址的地理位置信息,GeoCluster推导出整个群集的所有IP地址的地理位置信息。该方法的正确性高度取决于用户的输入。并且这些私有的位置信息一般情况下是不公开的。

    2、基于延迟测量

    ● GeoPing. Padmanabhan和Subramanian设计了GeoPing。它假设,如果两台机器的延迟向量越是类似的话,那么他们之间越有可能靠的近一些。GeoPing需要使用一组可以发送探测包的探测点。很明显,这种办法取决于可以发送探测包的探测点的数量,而通常这个数量是很少的。

    ● CBG. 之前的研究工作的输出结果多是一些单一的离散的地理位置。Gueye等人提出了基于约束的地理定位方法(Constraint based Geolocation, CBG)。这种方法使用三角测量的方法,提供了一片连续的地理空间范围。特别是,CBG测量从所有基准点到被探测目标点的延迟。然后,它把延迟转化成从基准点到被探测目标点之间的地理距离。最后,它使用三角测量的方法得到一片连续的地理范围。

    值得一提的是,CBG使用最优值(bestline)的限制来弥补互联网中路由的绕路和膨胀问题。然而,由于很难预测从一个探测点到目标节点路由是否绕路,通常情况下,只有在被探测节点离探测点很近时,CBG才行之有效。虽然CBG可以很有效地限制目的地区,但由于它测量的不准确性,因此,从本质上来说,要想实现非常精细的地理位置定位是十分困难的。

    ● TBG. 根据靠近被探测目标的路由器更容易被精确地地理定位这一事实, Katz-Bassett等人提出了基于拓扑结构的地理定位系统(Topology based Geolocation, TBG)。这种方法地理定位目标和到目标的路径中的路由器。TBG的关键贡献在于,它证实了网络的拓扑结构是可以被用来实现更高的地理定位精度。尤其是TBG首先定位到达被探测目标IP路径上路由器的地理位置,然后用这些路由器作为基准点来进一步得到探测目标IP的地理位置。除了使用网络的拓扑信息,一个TBG的变种也使用了一些被动的基准点。当然,这些基准点的位置都是已知的。然而,这样的做法的效果是十分有限的,这是因为这种方法受到基准点个数的限制。

    ● Octant. Wong等人提出了Octant,它也首先定位了到达被探测节点路径上的路由器的地理位置,然后以这些路由器作为基准点来进一步得到探测节点的地理位置。此外,Octant还考虑了一些正约束信息,如从被探测目标到基准点的最大距离,和一些负约束信息,如从被探测目标到基准点的最小距离。除了延迟的制约,Octant还在其系统中使用了一些其他的正约束和负约束限制。例如,从地理和人口统计数据中获得的负约束(海洋和无法居住的地区)。为了达到更高的精准度,Octant(与TBG方法一样)也首先定位了到达被探测节点路径上的路由器的地理位置,然后用这些路由器作为基准点来进一步得到探测节点的地理位置。

          IP地址定位这个领域,已经有了数十年的研究工作。尽管近年来取得了显著改善,但在商业领域中的IP地址定位产品的定位精度及信息完整度仍无法满足市场需求。之前最好的研究结果是Octant系统。该系统的中值误差距离是35公里。虽然这已经是一个很好的结果,但是正如我们看到的,Octant系统仍不足以满足市场的要求。一个高度精确的、无需硬件支持的IP地址定位系统已经变得对互联网越来越重要。

    为了满足市场需求,埃文科技的创始人王永提出了无需硬件支持的、街道级别的IP地理位置定位系统——《Towards Street-Level Client Independent IP Geolocation》(2011年在国际顶级互联网会议NSDI上发表,王永是第一位以第一作者身份在NSDI上发表论文的中国大陆学者)。该系统首次提出利用数据挖掘和网络测量相结合的方式,对IP地址进行定位;同时提出了一个三层的IP地址定位系统,并通过实验说明该系统的定位精准度,比定位效果最好的“Octant”提高了50倍。

     

    二、高精准IP地址定位互联网的影响

     

          虽然精确到城市级别或者区县级别的IP地址定位产品能够在某些领域满足用户需求。但一个更高精确度、更加可靠的IP地址定位产品已被确定为是互联网产业发展的重要需求。

    例如,互联网在线广告行业已经广泛地使用IP地址定位服务,高精准IP地址定位服务能更大程度的提升有效性。根据研究分析,基于位置的营销比无位置的营销转化率能够提升30~300%,并提升30%~50%的溢价。同样,高精准IP地址定位在网络安全、在线广告投放、在线安全支付、大数据分析、反欺诈风控、大数据征信等领域能提升产品性能和增加收益,为互联网行业发展做出贡献。它不仅能改善现有的应用程序的性能,同时将为基于位置服务提供新的支撑,也使以固定网络接入互联网的用户享受更精准的位置服务成为可能。

     

    埃文科技–全球高精准IP地址定位技术领航者

    作为专业从事位置服务的大数据技术科研互联网公司,自2012年成立至今,埃文科技持续推进IP地址定位领域的技术水准。公司专注于网络设备与地理空间位置映射系统的产品研发,拥有12项软件著作权及8项发明专利。

    “全球IP地址定位的领航者,为用户提供更加精准的IP地址定位服务”

    了解,使用IP问问

    展开全文
  • 通常意义上来说,app 可以读取 mac 地址,但仅限于用户已经阅读了隐私内容,并且隐私内容中也告知了用户,app 会运行期间采集 wlan mac 地址等信息。所以如果没等用户同意隐私政策中的内容,就开始提前读取 mac 地址...

    通常意义上来说,app 可以读取 mac 地址,但仅限于用户已经阅读了隐私内容,并且隐私内容中也告知了用户,app 会运行期间采集 wlan mac 地址等信息。所以如果没等用户同意隐私政策中的内容,就开始提前读取 mac 地址,这是不合法的行为。工信部抽查中如果发现此类行为,app 会被通告整改,整改不力的将强制从应用市场下架,后果还是很严重的。

    但这里忽略一个问题,如果我们的 app 本身代码没有读取 mac 地址,那如何是好?自己的代码心中有数,实在不行可以全局搜索,如果第三方库偷偷摸摸的读取 mac 地址,这问题解决起来就有点棘手了。首先我们要复现出来确实存在读取 mac 地址的行为,这里最好的办法就是直接在 android framework 和 Linux kernel 层面截获读取 mac 地址的信息。当然还可以通过安装 VirtualXposed 的方法来定位。

    我这里使用 NanoPC-T4 单板搭载 Android 8.0 系统进行实验,对于有android源码来说才能这样定位问题,如果只是 app 开发者,建议参考使用VirtualXposed的方法。

    一、获取 mac 地址

    你要截获获取 mac 地址信息,当然先要知道哪些接口可以读取 mac 地址,可以在调用接口处加入 log 输出。

    1.方法一

    先拿到 WifiManager,接着获取到 WifiInfo,通过 WifiInfo 对象的 getMacAddress() 方法得到 mac 地址。

    WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo winfo = wifi.getConnectionInfo();
    String mac =  winfo.getMacAddress();
    

    2.方法二

    使用 cat 命令,或者其他方式读取 /sys/class/net/wlan0/address 节点或 /sys/class/net/eth0/address 下的 mac 地址信息。

    cat /sys/class/net/wlan0/address
    cat /sys/class/net/eth0/address
    

    二、截获获取 mac 地址方法

    以下代码中+号表示需要增加的代码。

    1. WifiInfo getMacAddress()

    对于通过 WifiInfo 对象的 getMacAddress() 方法得到 mac 地址的方法,在 framework java 类 WifiInfo 中直接写入 log,可以清楚的知道那个 app 调用了此接口。

    /frameworks/base/wifi/java/android/net/wifi/WifiInfo.java

    ...
    + import android.util.Log;
    ...
        public String getMacAddress() {
    +        Log.d(TAG, "getMacAddress mac=" + mMacAddress, new RuntimeException("lhw"));
            return mMacAddress;
        }
    

    这会直接打印出调用堆栈的。比如下面是系统进程在调用(system_process) getMacAddress 方法。

    2020-12-08 10:56:13.166 490-810/system_process D/WifiInfo: getMacAddress mac=d4:12:43:86:69:88
        java.lang.RuntimeException: lhw
            at android.net.wifi.WifiInfo.getMacAddress(WifiInfo.java:478)
            at com.android.server.wifi.WifiStateMachine.syncRequestConnectionInfo(WifiStateMachine.java:1781)
            at com.android.server.wifi.WifiServiceImpl.getConnectionInfo(WifiServiceImpl.java:1752)
            at android.net.wifi.IWifiManager$Stub.onTransact(IWifiManager.java:320)
            at android.os.Binder.execTransact(Binder.java:697)
    

    2. cat 节点

    这要花一些功夫,要到 Linux 内核中找到供读取节点实现的方法。最后可以查到要在 net-sysfs.c 中相应修改。

    kernel/net/core/net-sysfs.c

    /* use same locking rules as GIFHWADDR ioctl's */
    static ssize_t address_show(struct device *dev, struct device_attribute *attr,
    			    char *buf)
    {
    	struct net_device *ndev = to_net_dev(dev);
    	ssize_t ret = -EINVAL;
    
    	read_lock(&dev_base_lock);
    	if (dev_isalive(ndev))
    		ret = sysfs_format_mac(buf, ndev->dev_addr, ndev->addr_len);
    	read_unlock(&dev_base_lock);
    +    printk(KERN_ALERT "mac address_show");
    	return ret;
    }
    

    编译系统整体烧写一下,再来运行app查看是否存在读取 mac 地址违规的问题。下面 mac address_show 这句 log 就表示有 app 读取了获取 mac 地址的节点了。下面的 Log 是通过串口读取的。
    在这里插入图片描述

    三、总结

    真实排查过程中发现,经过 360 加固后,首次运行 app 必现读取 mac 地址,当然这是违规行为了!最后更换为腾讯加固再试,问题得以解决。

    另外,我们使用的第三方sdk一定要注意,比如友盟在它的开发文档中有提到如何使用才能合规,我们需要参照 sdk 的指导去使用。

    最后,保护个人隐私任重而道远,需要开发者和监管部门共同努力!

    参考资料:

    1.https://blog.csdn.net/chaozhung_no_l/article/details/78329371

    2.https://www.jianshu.com/p/84127032d15a

    展开全文
  • 需求:点击输入框弹窗地图弹窗,输入框输入地址模糊搜索列表结果,点击列表添加相应得marker标记,并且添加标记拖拽选址功能。 项目中引入了element-ui,自行安装引入,这里不写了...... JSAPI 的加载 JS ...

     

    ⭐️ 作者:船长在船上
    🚩主页:来访地址船长在船上的博客
    🔨 简介:高级前端开发工程师,专注前端开发,欢迎咨询交流,共同学习!

    👉👉👉 欢迎来访船长在船上的博客,如有疑问可以留言、评论,看到后会及时回复。

    实现效果:

    需求:点击输入框弹窗地图弹窗,输入框输入地址模糊搜索列表结果,点击列表添加相应得marker标记,并且添加标记拖拽选址功能。

    e2bf487cb2cb412ca5feff3103849489.png

     watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Ii56ZW_5Zyo6Ii55LiK,size_20,color_FFFFFF,t_70,g_se,x_16

     watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Ii56ZW_5Zyo6Ii55LiK,size_20,color_FFFFFF,t_70,g_se,x_16

    项目中引入了element-ui,自行安装引入,这里不写了......

    JSAPI 的加载

    JS API 2.0 版本提供了两种方案引入地图 JSAPI:

    1. 使用官网提供的 JSAPI Loader 进行加载;

    2. 以常规 JavaScript 脚本的方式加载;

    注意:为避免地图数据协议和前端资源不匹配导致页面运行报错,只允许在线加载 JSAPI,禁止进行本地转存、与其它代码混合打包等用法。

    使用 JSAPI Loader (推荐)

    JSAPI Loader是我们提供的 API 加载器,可帮助开发者快速定位、有效避免加载引用地图 JSAPI 各种错误用法,具有以下特性:

    • 支持以 普通JS 和 npm包 两种方式使用;
    • 有效避免错误异步加载导致的 JSAPI 资源加载不完整问题;
    • 对于加载混用多个版本 JSAPI 的错误用法给予报错处理;
    • 对于不合法加载引用 JSAPI 给予报错处理;
    • 支持指定 JSAPI 版本;
    • 支持插件加载;
    • 允许多次执行加载操作,网络资源不会重复请求,便于大型工程模块管理;
    • 支持IE9以上的浏览器,不支持IE8以下

    注意(您在2021年12月02日申请以后的key需要配合您的安全密钥一起使用)

    JSAPI key和安全密钥的使用

    JSAPI key搭配代理服务器并携带安全密钥转发(安全)

    1) 引入 JSAPI 使用 Loader 之前增加代理服务器设置脚本标签,设置代理服务器域名或地址,将下面示例代码中的「您的代理服务器域名或地址」替换为您的代理服务器域名或ip地址,其中_AMapService为代理请求固定前缀,不可省略或修改。   (注意您这 个设置必须是在加载loader.js的脚本引入之前进行设置,否则设置无效。)

    项目代码步骤:

    1、在index.html页面body中添加秘钥

    .......
    <body>
        <noscript>
          <strong>We're sorry but map-demo doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
        </noscript>
        <div id="app"></div>
        <script type="text/javascript">
          window._AMapSecurityConfig = {
              // serviceHost:'您的代理服务器域名或地址/_AMapService',  
              securityJsCode:"xxxxxx"//申请的秘钥
          }
        </script>
      </body>
    ......

     2、安装@amap/amap-jsapi-loader 使用

    npm i @amap/amap-jsapi-loader --save

     App.vue页面引入:

    import AMapLoader from "@amap/amap-jsapi-loader";

    3、重要代码:

    <template>
      <div class="positionBox">
        <el-input style="width:600px;margin:100px 0 0 100px;" v-model="positionVal" placeholder="请输入内容" @focus="handleOpen"></el-input>
        <div class="wrapper" v-show="dialogVisible">
          
          <div class="mapcontainer">
            <div class="el-dialog__header">
              <button type="button" aria-label="Close" class="el-dialog__headerbtn" @click="handleClose">
                <i class="el-dialog__close el-icon el-icon-close" style="font-size:25px;"></i>
                </button>
            </div>
            <div class="mapContent">
              <div id="all" style="height: 100%">
                <div class="posInput">
                  <el-input
                    style="width: 100%"
                    id="tipinput"
                    class="form-control input-style"
                    type="text"
                    placeholder="请输入搜索地址"
                    prefix-icon="el-icon-search"
                    v-model="MapAdress"
                  >
                  </el-input>
                </div>
                <div id="allmap"></div>
                <div class="posSubmit">
                  <el-form ref="form" label-width="100px">
                    <div class="btn_box">
                      <el-form-item label="地址坐标:" style="width:45%">
                        <el-input disabled type="text" v-model="insureAdress" >
                        </el-input>
                      </el-form-item>
                      <el-form-item label="经纬度:" style="width:45%">
                        <el-input disabled type="text" v-model="insureAdress2" >
                        </el-input>
                      </el-form-item>
                      <el-form-item>
                        <el-button type="primary" size="large" style="margin-left: 10px" @click="insureMapAdress">确定</el-button>
                      </el-form-item>
                    </div>
                  </el-form>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </template>
    <script>
    import AMapLoader from "@amap/amap-jsapi-loader";
    export default {
      name: "app",
      data() {
        return {
          dialogVisible:false,
          positionVal:"",
          map: null,
          marker: null,
          geocoder: null, // 地理编码与逆地理编码类,用于地址描述与坐标之间的转换
          startAutoComplete: null,
          startPlaceSearch: null,
          positionPicker: null,
          startSeacrh: [],
          stratInfo: {},
    
          thisPosition: {
            location: "",
            lng: "",
            lat: "",
          },
          mapinitCode: 0, //地理编码:1;地理逆编码:2
          MapAdress: "",
          insureAdress: "",
          insureAdress2: "",
        };
      },
      mounted() {
        // this.loadmap();//因为使用的弹窗加载,所以这里不用执行了,在打开弹窗时候在调用此方法
      },
      methods: {
        loadmap() {
          const that = this;
          return new Promise((reslove, reject) => {
            AMapLoader.load({
              key: "xxxxxx", // 申请好的Web端开发者Key,首次调用 load 时必填
              // version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
              plugins: ["AMap.ToolBar","AMap.Scale", "AMap.Geocoder"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
              AMapUI: {
                // 是否加载 AMapUI,缺省不加载
                version: "1.1", // AMapUI 缺省 1.1
                plugins: [], // 需要加载的 AMapUI ui插件
              },
            }).then((AMap) => {
                that.map = new AMap.Map("allmap", {
                  resizeEnable: true,
                  zoom: 10,
                  center: [116.397428, 39.90923], //中心点坐标
                });
                // 地图点击事件
                // that.map.on("click", (e) =>{
                //   let lnglatXY = [e.lnglat.getLng(), e.lnglat.getLat()];
                //   console.log(lnglatXY)//当前经纬度
                // })
    
                //地图控件
                that.map.addControl(new AMap.Scale());
                that.map.addControl(new AMap.ToolBar());
                // that.map.setMapStyle("amap://styles/blue")
                // that.map.setMapStyle("amap://styles/darkblue")
                // 地理编码与逆地理编码类,用于地址描述与坐标之间的转换
                that.geocoder = new AMap.Geocoder();
                //地点查询
                AMap.plugin(["AMap.PlaceSearch", "AMap.Autocomplete"], function () {
                  let autoOptions1 = { 
                    input: "tipinput", 
                    city: "全国" 
                  };
                  that.startAutoComplete = new AMap.Autocomplete(autoOptions1);
                  that.startPlaceSearch = new AMap.PlaceSearch({
                    map: that.map,
                  });
                  that.startAutoComplete.on("select", that.handleStartSelect); //注册监听,当选中某条记录时会触发
                });
                that.handlePositionPickerEvent(); //实现地图拖拽选址功能
    
                that.map.setZoom(14);//设置缩放大小
    
                reslove();
              }).catch((e) => {
                console.log(e, "高德地图加载失败");
                reject(e);
              });
          });
        },
        handlePositionPickerEvent() {
          let that = this;
          AMapUI.loadUI(["misc/PositionPicker"], (PositionPicker) =>{
            console.log("拖拽加载成功");
            that.positionPicker = new PositionPicker({
              // mode: 'dragMap',//拖拽地图
              mode: "dragMarker",//拖拽图标
              map: that.map,
            });
    
            that.positionPicker.on("success", (positionResult)=> {
              console.log(positionResult, "拖拽信息");
              console.log(positionResult.position,"拖拽经纬度")
    
              if(positionResult.address){
                this.insureAdress = positionResult.address;
                this.insureAdress2 = "[" + positionResult.position + "]"
              }else{
                this.insureAdress="";
                this.insureAdress2 = "";
              };
    
            });
            that.positionPicker.on("fail", (positionResult) =>{
              // 海上或海外无法获得地址信息
            });
          });
        },
        handleStartSelect(event) {
          console.log(event, "起点经纬度 [lng,lat]");
          if (event.poi.location == "") {
            this.$message({
              type: "warning",
              message: "该地点无经纬度数据,请输入具体一点的地点!",
              duration: 5 * 1000,
            });
            return;
          }
          if (this.marker) {
            this.map.remove(this.marker);
            this.marker = null;
          }
          this.startSeacrh = [];
          this.stratInfo = {};
          this.startSeacrh = [event.poi.location.lng, event.poi.location.lat];
          this.stratInfo = {
            district: event.poi.district,
            address: event.poi.address,
            name: event.poi.name,
          };
          this.insureAdress = event.poi.district + event.poi.address + event.poi.name;
          this.insureAdress2 = "[" + event.poi.location.lng + "," + event.poi.location.lat + "]";
    
          // marker添加地图上
          // this.marker = new AMap.Marker({
          //   position: this.startSeacrh, //位置
          // });
          // this.map.add(this.marker); //添加到地图
    
          // 传入经纬度,设置地图中心点
          this.map.setCenter(this.startSeacrh);
          this.positionPicker.start(this.startSeacrh);  //启动这句控制 地图出现一个maker点,可以移动
          // this.positionPicker.stop();   //取消移动的maker
          this.map.setZoom(15);
    
          // 添加自定义弹窗
          // this.addDialog(this.insureAdress);
        },
        addDialog(address){
          this.map.setCenter(this.startSeacrh);
          this.marker.content = address;
          this.marker.on('click', this.markerClick);
          this.marker.emit('click', {target: this.marker});
        },
        markerClick(e){
          let infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});
          infoWindow.setContent(e.target.content);
          infoWindow.open(this.map, e.target.getPosition());
        },
        insureMapAdress() {
          //确定地址
          this.positionVal = this.insureAdress;
          this.dialogVisible = false;
          this.MapAdress = "";
          this.insureAdress = "";
          this.insureAdress2 = "";
          this.positionPicker.stop();   //取消移动的maker
        },
    
        maplocal(address) {
          //地理逆编码
          this.geocoder.getLocation(address, (status, result) => {
            console.log(address);
            if (status === "complete" && result.geocodes.length) {
              console.log(result);
              const lnglat = result.geocodes[0].location;
    
              const lat = lnglat.lat;
              const lng = lnglat.lng;
              that.mapinit(lat, lng); //tips:使用地理逆编码,此时解析出的经纬度位置也应逆换
            } else {
              console.log(result);
            }
          });
        },
        handleOpen(){
          this.dialogVisible = true;
          this.loadmap();
        },
        handleClose(){
          this.dialogVisible = false;
          this.MapAdress = "";
          this.insureAdress = "";
          this.insureAdress2 = "";
          this.positionPicker.stop();   //取消移动的maker
        }
      },
    };
    </script>
    <style scoped>
    .mapContent{
      /* position: absolute;
      left:0;
      top:0;
      width:100%; */
      height:460px;
    }
    #all {
      position: relative;
    }
    #allmap {
      width: 100%;
      height: calc(100% - 50px);
      font-family: "微软雅黑";
    }
    .posInput {
      position: absolute;
      z-index: 1;
      width: 80%;
      margin-top: 20px;
      margin-left: 10%;
    }
    ::v-deep .el-form-item {
      margin-bottom: 0 !important;
    }
    .btn_box{
      display: flex;
    }
    /* 去除高德水印 */
    ::v-deep .amap-logo {
      display: none;
      opacity: 0 !important;
    }
    ::v-deep .amap-copyright {
      opacity: 0;
    }
    .wrapper{
      position: fixed;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background: rgb(0 0 0 / 30%);
    }
    .mapcontainer{
      position: absolute;
      left:50%;
      top:50%;
      width:80%;
      height:460px;
      transform: translate(-50%,-50%);
      background: #fff;
      padding:50px;
    }
    </style>
    

    🔔  感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!如有疑问可以留言、评论,看到后会及时回复。

    展开全文
  • 一、手机App定位在我看来有三种方法:1.通过Android自带的API:...通过外部接口获取到外网IP,再通过百度API或者聚合数据的API得出地址1、Android自带API,它有三种定位方式可以通过GPS,网络和WIFI定位。1.1步骤:...
  • 实现后台定位,持续无限制定位

    千次阅读 2021-06-04 12:41:05
    停止定位增加回调信息 2.修改定时回调方式,解决重复返还定位信息查看更多平台兼容性AndroidiOS适用版本区间:4.4 - 11.0×原生插件通用使用流程:购买插件,选择该插件绑定的项目。在HBuilderX里找到项目,在m...
  • MAC地址定位技术的大数据警用应用

    千次阅读 2017-04-27 14:35:43
    在传统方式上的电脑定位大致是通过技术手段获取到电脑所在网络出口IP地址,然后通过运营商查询相关IP的登记属性。这种方式步骤繁琐,流程冗长。本文是用于探讨新信息时代的大数据管理方式模型,以提高PC、笔记本等...
  • 手机定位是指通过特定的定位技术来获取移动手机或终端用户的位置信息(经纬度坐标),在电子地图上标出被定位对象的位置的技术或服务。定位技术有两种,一种是基于GPS的定位,一种是基于移动运营网的基站的定位。...
  • 在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,...偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑。
  • uwb定位技术的原理及定位方法

    千次阅读 2021-08-10 16:08:23
    传统的定位技术是根据信号强弱来判别物体位置,信号强弱受外界 影响较大,因此定位出的物体位置与实际位置的误差也较大,定位精度不高,而 uwb 定位采用了宽带脉冲通讯技术,具备极强的抗干扰能力,使定位误差减小。...
  • 近期华为开发者论坛收到一位小伙伴提问: 我的应用app需要调用GPS的位置服务,已经将应用所需要的所有权限全部打开,而且使用了wifi和4G网络,手机的耗电管理和...GPS定位支持离线定位,依靠卫星,没有网络也能定位..
  • Android定位功能实现

    万次阅读 多人点赞 2020-05-28 18:20:10
    关于Android定位功能如何实现的文章实在...文章目录获取定位权限在AndroidManifest.xml中增加权限配置检查是否有定位权限申请权限判断请求权限结果弹框提醒用户去设置打开(可选)打开权限设置页面检查定位服务开关检查
  • 一、Xpath定位方法深入探讨(1)常用的Xpath定位方法及其特点使用绝对路径定位元素。例如:driver.findElement(By.xpath("/html/body/div/form/input"))。特点:这个路径是从网页起始标签开始一直到要定位的元素的路径...
  • vue调用百度定位接口实现地理定位

    千次阅读 2020-10-25 17:36:59
    } 只要给浏览器授权就能在页面上显示出经纬度了,然后我们调用百度的接口,把经纬度信息传入就能返回地理位置信息,如果我们要在vue项目中增加定位功能该怎么做呢,下面是具体的实现步骤。 step1 在index.html中的...
  • Android 百度地图SDK 自动定位、标记定位

    千次阅读 多人点赞 2020-07-28 13:59:01
    当然光是定位到自己的位置也是不够的,我还希望点击地图的时候能够定位过去, 四、标点定位、回到原位 先修改MainActivity.xml文件, 根布局改为RelativeLayout,然后增加一个ImageButton 里面用到的图标 写完之后...
  • 而传统的IP地址定位产品仅能提供城市或区县级别的定位数据,无法支撑基于位置的服务开展。IP问问可以提供高精准(街道级别)的IP地址定位数据,支持各种基于位置的服务开展。  一、为什么准确度与一致性相加超过...
  • 高德地图实现拖拽选址、搜索、定位,可以嵌套小程序webview不被拦截 请不要忘记换成你的高德Key钥匙 写这篇文章的时候我也很纠结,因为有一些参数我也不太明白,但是呢因为配同事加班无聊,所以就写了。先看一下...
  • 微信内前端H5定位方式比较

    千次阅读 2021-01-20 18:02:04
    enableHighAccuracy: true, //true为高精度,但耗电量增加 timeout: 5000, //超时时间必填,否则默认为无穷大 maximumAge: 0 //位置的缓存时间,默认0即不缓存 }; function success(pos) { var crd = pos....
  • Android实现百度地图定位服务

    千次阅读 2021-12-04 17:35:31
    下载定位包 访问http://lbsyun.baidu.com,依次选择:开发文档->Android 地图SDK->产品下载->自定义下载,勾选百度定位包(至少选择基础定位和基础地图)后下载。 下载并且解压 选择模块视图为Project,...
  • 水印相机怎么定位位置

    千次阅读 2021-01-17 19:35:17
    ①进入水印相机后,点2113击屏幕上5261地理位置信息栏。...③输入文字后点击,返回水印相机拍摄...水印相机是一款可以添加个性化水印的拍照软件,那么水印相机怎样才能自动定位呢?1、打开手机、(以华为荣耀手机为例)...
  • 主要实现功能: a.进入地图界面,会自动获取...左下角定位当前位置实现,当移动地图到别的位置,点击左下角图标,会回归到当前位置 下面是代码的实现 1. app.json文件中 "permission":{ "scope.userLocat...
  • iOS:定位地址和经纬度互转

    千次阅读 2019-04-11 15:16:28
    1.增加定位权限: 打开Info.plist,在<dict>节点增加NSLocationUsageDescription值: <dict> ... <key>NSLocationUsageDescription</key> <string>请求获取位置信息</str...
  • 上篇已经介绍了如何搭建环境,这篇就讨论如何在 `A9G` 模块上实现定位获取经纬度以及把经纬度通过`MQTT`协议连接的推送到服务器;
  •   手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位。   本工程利用手机自带的"模拟位置"功能实现运行时修改LocationManager结果。   原理:使用android自带的调试api,模拟gps provider的结果...
  • 定位表(Relocation Table)用于在程序加载到内存中时,进行内存地址的修正。一个简单程序test.exe需要三个动态链接库dll(a.dll,b.dll,c.dll),假设test.exe的ImageBase为400000H,而a.dll、b.dll、c.dll的...
  • 在HTML 5的规范中,增加了获取用户地理位置信息的接口Geolocation,开发者可以通过经纬度来获取用户的地理位置信息,Geolocation接口的特点如下。 Geolocation接口封装了获取位置信息的技术细节。 开发者不需要关心...
  • 静态重定位和动态重定位

    万次阅读 多人点赞 2018-06-04 18:50:31
    优点:是无需增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。 缺点:内存空间不能移动;各个用户进程很难共享内存中同一程序的副本动态重定位:动态运行的...
  • 基于WiFi的室内定位

    万次阅读 多人点赞 2018-12-15 09:58:48
    GPS难以解决室内环境下的一些定位问题,大部分室内环境下都存在WiFi,因此利用WiFi进行定位无需额外部署硬件设备,是一个非常节省成本的方法。然而WiFi并不是专门为定位而设计的,传统的基于时间和角度的定位方法并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,119
精华内容 88,447
热门标签
关键字:

怎么增加定位地址