精华内容
下载资源
问答
  • 我想很多人都有一个困惑(包括咱们的大版主...使用百度地图API来获取经纬度坐标。首先是修改了一点的百度获取经纬度坐标的代码!package Dagaishang.Android;[/size][/font][/align][font=Helvetica, Tahoma, Arial, ...

    我想很多人都有一个困惑(包括咱们的大版主叮当猫大哥),这个困惑就是不知道在百度地图中怎样获得经纬度。上次简单的跟叮当猫哥说了一下。今天就具体分析一下这个问题。

    使用百度地图API来获取经纬度坐标。

    首先是修改了一点的百度获取经纬度坐标的代码!

    package Dagaishang.Android;[/size][/font][/align]

    [font=Helvetica, Tahoma, Arial, sans-serif][size=3][align=left]import java.util.HashMap;[/align]

    [align=left]import java.util.Map;[/align]

    [align=left]import Dagaishang.Android.Utility.CmpDistance;[/align]

    [align=left]import android.app.Activity;[/align]

    [align=left]import android.content.Context;[/align]

    [align=left]import android.os.Bundle;[/align]

    [align=left]import android.widget.TextView;[/align]

    [align=left]import android.location.Location;[/align]

    [align=left]import com.baidu.mapapi.BMapManager;[/align]

    [align=left]import com.baidu.mapapi.LocationListener;[/align]

    [align=left]public class MyLocation extends Activity {[/align]

    [align=left]    // 自己的经纬度坐标[/align]

    [align=left]    private Double myPointX, myPointY;[/align]

    [align=left]    // 计算的两个经纬度之间的距离[/align]

    [align=left]    private Double Distance;[/align]

    [align=left]    LocationListener mLocationListener = null;// create时注册此listener,Destroy时需要Remove[/align]

    [align=left]    Map myMap = new HashMap();[/align]

    [align=left]    CmpDistance comDis = new CmpDistance();[/align]

    [align=left]    String FriendPx;[/align]

    [align=left]    String FriendPy;[/align]

    [align=left]    protected void onCreate(Bundle savedInstanceState) {[/align]

    [align=left]        super.onCreate(savedInstanceState);[/align]

    [align=left]        setContentView(R.layout.mylocation);[/align]

    [align=left]//      getLocationByBaidu("0", "0",this);[/align]

    [align=left]    }[/align]

    [align=left]    // FriendPx,FriendPy为好友的经纬度坐标,返回值为计算后的两个坐标的点的距离[/align]

    [align=left]    String getLocationByBaidu(String PointY, String PonitY,Activity tontext) {[/align]

    [align=left]        FriendPx = PointY;[/align]

    [align=left]        FriendPy = PonitY;[/align]

    [align=left]        BMapApiDemoApp app = (BMapApiDemoApp)tontext.getApplication();[/align]

    [align=left]        if (app.mBMapMan == null) {[/align]

    [align=left]            app.mBMapMan = new BMapManager(this.getApplication());[/align]

    [align=left]            app.mBMapMan.init(app.mStrKey,[/align]

    [align=left]                    new BMapApiDemoApp.MyGeneralListener());[/align]

    [align=left]        }[/align]

    [align=left]        app.mBMapMan.start();[/align]

    [align=left]        // 注册定位事件[/align]

    [align=left]        mLocationListener = new LocationListener() {[/align]

    [align=left]            public void onLocationChanged(Location location) {[/align]

    [align=left]                if (location != null) {[/align]

    [align=left]                    myPointX = location.getLongitude();[/align]

    [align=left]                    myPointY = location.getLatitude();[/align]

    [align=left]                    Distance = comDis.GetLongDistance(myPointX, myPointY,[/align]

    [align=left]                            Double.valueOf(FriendPx), Double.valueOf(FriendPy));[/align]

    [align=left]                }[/align]

    [align=left]            }[/align]

    [align=left]        };[/align]

    [align=left]        return String.valueOf(Distance);[/align]

    [align=left]    }[/align]

    [align=left]    protected void onPause() {[/align]

    [align=left]        BMapApiDemoApp app = (BMapApiDemoApp) this.getApplication();[/align]

    [align=left]        // 移除listener[/align]

    [align=left]        app.mBMapMan.getLocationManager().removeUpdates(mLocationListener);[/align]

    [align=left]        app.mBMapMan.stop();[/align]

    [align=left]        super.onPause();[/align]

    [align=left]    }[/align]

    [align=left]    protected void onResume() {[/align]

    [align=left]        BMapApiDemoApp app = (BMapApiDemoApp) this.getApplication();[/align]

    [align=left]        // 注册Listener[/align]

    [align=left]        app.mBMapMan.getLocationManager().requestLocationUpdates([/align]

    [align=left]                mLocationListener);[/align]

    [align=left]        app.mBMapMan.start();[/align]

    [align=left]        super.onResume();[/align]

    [align=left]    }[/align]

    [align=left]}

    大家明白,其中的getLocationByBaidu()就是我想要使用到的获取经纬度并计算两个点之间距离的方法了,但是其中 if (app.mBMapMan == null) 在其他地方调用的时候会报空指针错误。出现这个错误的原因是什么呢?

    是不是因为传递过来的Activity不对或者说这里的getlocation()没有获取到东西?

    经过跟朋友讨论我终于得出了解决方案。

    由代码

    if (location != null) {

    知道它的调用时肯定不是空的,而

    肯定是传的时候就是空的。

    对于这个径纬度,我们可以分开做,

    取得径纬度不做好,就不要进行下一步,

    现只需将此两个变量值当成参数或是用结构体还是啥数据类型都一回事的。

    写代码入下

    Class VecLoc{[/size][/font][/align]

    [font=Helvetica, Tahoma, Arial, sans-serif][size=3][align=left]double latitude =0;//经度[/align]

    [align=left]double longitude =0;//纬度[/align]

    [align=left]float accuracy =0;//精度[/align]

    [align=left]double altitude =0;//海拔[/align]

    [align=left]float bearing =0;//方向[/align]

    [align=left]float speed =0;//速度[/align]

    [align=left]}

    关健是能把数据送过去,此处在不在activity里不重要,因为context可以传送。

    另外还有一种方法,如果操作过多,你可以建立一个Handler消息通道,在任何地方都可以通过这样来与之通信,特别你有多个类会很实用。

    代码入下:Bundle data = new Bundle();

    String mTAG = "LocationMessage";

    String str="{\"latitude\":123,\"longtitude\":321}";

    data.putString(mTAG,str);

    Message msg = new Message();

    msg.setData(data);

    mHandler.sendMessage(msg);

    展开全文
  • 前端获取经纬度

    千次阅读 2020-04-29 12:05:18
    H5获取 参考 geolocation 对象 下面的方法只能获取到粗精度 注意:无 GPS 模块的 PC ...参考:JS获取本地经纬度 一个最简单的调用方法 window.navigator.geolocation.getCurrentPosition(function (position) { ...

    H5获取

    参考

    geolocation 对象

    下面的方法只能获取到粗精度

    注意:无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。

    参考:JS获取本地经纬度

    一个最简单的调用方法

    window.navigator.geolocation.getCurrentPosition(function (position) {
        console.log(position.coords.latitude)
        console.log(position.coords.longitude)
    })
    

    封装好的代码如下:

    function getPosition () {
      return new Promise((resolve, reject) => {
        if (navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(function (position) {
            let latitude = position.coords.latitude
            let longitude = position.coords.longitude
            let data = {
              latitude: latitude,
              longitude: longitude
            }
            resolve(data)
          }, function () {
            reject(arguments)
          })
        } else {
          reject('你的浏览器不支持当前地理位置信息获取')
        }
      })
    }
    

    调用方法如下:

          // 获取当前经纬度坐标
          getPosition().then(result => {
            // 返回结果示例:
            // {latitude: 30.318030999999998, longitude: 120.05561639999999}
            // 一般小数点后只取六位,所以用以下代码搞定
            let queryData = {
              longtitude: String(result.longitude).match(/\d+\.\d{0,6}/)[0],
              latitude: String(result.latitude).match(/\d+\.\d{0,6}/)[0],
              channelType: '00'
            }
            console.log(queryData)
            // 以下放置获取坐标后你要执行的代码:
            // ...
          }).catch(err => {
            console.log(err)
          })
    

    记得,这是一个异步操作,所以获取坐标后需要执行的代码不能直接写在函数后面,而是应该写在then里面(参照注释所写的位置)

    参考:移动端获取当前用户的经纬度

    一、HTML5 geolocation的属性

    if(navigator.geolocation){
      navigator.geolocation.getCurrentPosition(onSuccess , onError);
    }else{
      alert("您的浏览器不支持使用HTML 5来获取地理位置服务");
    }
    //定位数据获取成功响应
    function  onSuccess(position){
          alert('纬度: '          + position.coords.latitude          + '\n' +
          '经度: '         + position.coords.longitude         + '\n' +
          '海拔: '          + position.coords.altitude          + '\n' +
          '水平精度: '          + position.coords.accuracy          + '\n' +
          '垂直精度: ' + position.coords.altitudeAccura)
    }
    //定位数据获取失败响应
    function onError(error) {
      switch(error.code)
      {
        case error.PERMISSION_DENIED:
        alert("您拒绝对获取地理位置的请求");
        break;
        case error.POSITION_UNAVAILABLE:
        alert("位置信息是不可用的");
        break;
        case error.TIMEOUT:
        alert("请求您的地理位置超时");
        break;
        case error.UNKNOWN_ERROR:
        alert("未知错误");
        break;
      }
    }
    

    二、百度地图api定位

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=xxxxxxxxxx"></script>
     <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
     <script>
        window.BMap = BMap;
        let BMap = window.BMap
        let geolocation = new BMap.Geolocation()
    
        geolocation.enableSDKLocation(); //允许SDK辅助
        geolocation.getCurrentPosition(function (r)
       {
            if(this.getStatus() == 0){
            console.log(r)
           }
      })
     </script>
    

    在这里插入图片描述

    HTML5获取地理经纬度并通过百度接口得到实时位置
    百度地图api
    百度地图鹰眼记录轨迹

    三 、腾讯地图api定位

    <iframe id="geoPage" width=0 height=0 frameborder=0  style="display:none;" scrolling="no"
        src="https://apis.map.qq.com/tools/geolocation?key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&referer=myapp">
    </iframe>
    
    window.addEventListener('message', function(event) {
        // 接收位置信息
        var loc = event.data;
        console.log('location', loc);
    }, false)       ;
    setTimeout(function() {
        if (!_this.loc) {
           console.log('定位超时')
        }
    }, 6000) // 6s为推荐值,业务调用方可根据自己的需求设置改时间,不建议太短
    

    在这里插入图片描述
    腾讯地图组件API
    腾讯JavaScript API

    实操

    参考:vue使用腾讯地图定位

    引入js包(注意:vue项目得在首页的index.html里面引入)

    <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=yourkey"></script>
    //这个是固定的用这个链接就可以
    <script src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
    

    三步走

    <template>
        <div id="container" style="width:600px;height:500px;"></div>
    </template>
    
    <script>
        export default{
            name:'news',
            data() {
                return {
                    longitude:0,//经度
                    latitude:0,//纬度
                    city:''
                }
            },
            methods:{
      //第一部分
                  //定位获得当前位置信息
                getMyLocation() {
                    var geolocation = new qq.maps.Geolocation("yourkey", "yourkey名称");
                    geolocation.getIpLocation(this.showPosition, this.showErr);
                    //geolocation.getLocation(this.showPosition, this.showErr);//或者用getLocation精确度比较高
                },
                showPosition(position) {
                    console.log(position);
                    this.latitude = position.lat;
                    this.longitude = position.lng;
                    this.city = position.city;
                    this.setMap();
                },
                showErr() {
                    console.log("定位失败");
                    this.getMyLocation();//定位失败再请求定位,测试使用
                },
    //第二部分
            //位置信息在地图上展示
                setMap() {
                    //步骤:定义map变量 调用 qq.maps.Map() 构造函数   获取地图显示容器
                    //设置地图中心点
                    var myLatlng = new qq.maps.LatLng(this.latitude,this.longitude);
                    //定义工厂模式函数
                    var myOptions = {
                      zoom: 13,               //设置地图缩放级别
                      center: myLatlng,    //设置中心点样式
                      mapTypeId: qq.maps.MapTypeId.ROADMAP  //设置地图样式详情参见MapType
                    }
                    // //获取dom元素添加地图信息
                    var map = new qq.maps.Map(document.getElementById("container"), myOptions);
    //第三部分
                  //给定位的位置添加图片标注
                    var marker = new qq.maps.Marker({
                        position: myLatlng,
                        map: map
                    });
                    //给定位的位置添加文本标注
                    var marker = new qq.maps.Label({
                        position: myLatlng,
                        map: map,
                        content:'这是我当前的位置,偏差有点大,哈哈'
                    });
                }
              },
            mounted() {
                this.getMyLocation();
                }
            }
    </script>
    

    在这里插入图片描述
    小伙伴们用的时候可以一步一步去实现,保证每一步都实现后再进行下一步

    在这里插入图片描述
    在这里插入图片描述

    vue使用腾讯地图(一)https://www.jianshu.com/p/130cdbd07394
    vue使用腾讯地图(二)事件https://www.jianshu.com/p/0ce29aec5f47
    vue使用腾讯地图(三)标注https://www.jianshu.com/p/eca4f20ee1cb
    vue使用腾讯地图(四)定位实战qq.maps.Geolocation

    申请key地址https://lbs.qq.com/console/mykey.html

    官方文档
    https://lbs.qq.com/tool/component-geolocation.html
    https://lbs.qq.com/javascript_v2/guide-start.html

    展开全文
  • 如:获取经纬度,获取位置,获取地址,获取地名。结下来就具体给大家讲解。 老规矩先看效果图 接下来我们就来看看具体实现步骤 一,定义一个按钮来调用位置获取的api <!--index.wxml--> <button bindtap=...

    我们在做小程序开发时,难免会遇到地图相关的开发,而小程序已经为我们提供的比较完善的地图组件。我们只需要调用相关的api就可以实现大致的功能。如:获取经纬度,获取位置,获取地址,获取地名。结下来就具体给大家讲解。

    老规矩先看效果图

    接下来我们就来看看具体实现步骤

    一,定义一个按钮来调用位置获取的api

    <!--index.wxml-->
    <button bindtap='getLocation'>获取位置信息</button>
    <text>{{jingwei}}</text>
    <text>{{address}}</text>
    <text>{{name}}</text>
    

    二,调用获取地理位置的方法

    //index.js
    
    Page({
     getLocation() {
      let that = this;
      wx.chooseLocation({
       success: function(res) {
        console.log(res)
        var latitude = res.latitude
        var longitude = res.longitude;
        that.setData({
         jingwei: "经纬度:" + longitude + ", " + latitude,
         address: "  地址:" + res.address,
         name: "  地名:" + res.name
        })
       }
      });
     }
    })
    

    其实到这里我们就可以实现获取经纬度,获取位置信息的功能了。
    但是呢??现在小程序调用用户位置信息时,需要用户授权,如下图,如果用户点击了拒绝,我们就没有办法调用地图获取位置信息了。

    所以呢,我们要想实现一个完整的获取用户位置信息的功能,就要在监测到用户拒绝的位置权限时,引导用户去重新授权。这样才是一个友好的健壮的程序。下面就来教大家如何引导用户去打开授权。

    三,在app.json里注册位置权限


    上图红色框里就是我们的位置权限的注册代码,app.json的完整代码如下。

    {
     "pages": [
      "pages/index/index",
      "pages/setting/setting"
     ],
     "window": {
      "backgroundTextStyle": "light",
      "navigationBarBackgroundColor": "#fff",
      "navigationBarTitleText": "WeChat",
      "navigationBarTextStyle": "black"
     },
     "permission": {
      "scope.userLocation": {
       "desc": "你的位置信息将用于小程序位置接口的效果展示"
      }
     },
     "sitemapLocation": "sitemap.json"
    }
    

    四,定义检查位置权限是否打开的方法

     //校验位置权限是否打开
     checkLocation() {
      let that = this;
      //选择位置,需要用户授权
      wx.getSetting({
       success(res) {
        if (!res.authSetting['scope.userLocation']) {
         wx.authorize({
          scope: 'scope.userLocation',
          success() {
           wx.showToast({ //这里提示失败原因
            title: '授权成功!',
            duration: 1500
           })
          },
          fail() {
           that.showSettingToast('需要授权位置信息');
          }
         })
        }
       }
      })
     },
    

    这个方法就是来检查用户的位置权限是否授权,如果没有授权,就弹窗提示用户去授权页授权。弹窗代码如下:

     // 打开权限设置页提示框
     showSettingToast: function(e) {
      wx.showModal({
       title: '提示!',
       confirmText: '去设置',
       showCancel: false,
       content: e,
       success: function(res) {
        if (res.confirm) {
         wx.navigateTo({
          url: '../setting/setting',
         })
        }
       }
      })
     },
    

    至此就可以实现一个完整的获取用户位置信息的小程序了,index.js完整代码如下

    //index.js
    
    Page({
     getLocation() {
      this.checkLocation();
      let that = this;
      wx.chooseLocation({
       success: function(res) {
        console.log(res)
        var latitude = res.latitude
        var longitude = res.longitude;
        that.setData({
         jingwei: "经纬度:" + longitude + ", " + latitude,
         address: "  地址:" + res.address,
         name: "  地名:" + res.name
        })
       }
      });
     },
     //校验位置权限是否打开
     checkLocation() {
      let that = this;
      //选择位置,需要用户授权
      wx.getSetting({
       success(res) {
        if (!res.authSetting['scope.userLocation']) {
         wx.authorize({
          scope: 'scope.userLocation',
          success() {
           wx.showToast({ //这里提示失败原因
            title: '授权成功!',
            duration: 1500
           })
          },
          fail() {
           that.showSettingToast('需要授权位置信息');
          }
         })
        }
       }
      })
     },
     // 打开权限设置页提示框
     showSettingToast: function(e) {
      wx.showModal({
       title: '提示!',
       confirmText: '去设置',
       showCancel: false,
       content: e,
       success: function(res) {
        if (res.confirm) {
         wx.navigateTo({
          url: '../setting/setting',
         })
        }
       }
      })
     },
    })
    

    从代码中可以看到,我们在用户拒绝授权时的提示框,点击会跳转到setting页,setting也是我们自己的页面,但是这个页面特别简单。就定义一个button。

    <!--pages/setting/setting.wxml-->
      <button class="button" 
    open-type="openSetting" type='primary'>
    打开授权设置页
    </button>
    

    为什么要这么做呢,因为微信不允许我们直接打开权限设置页,必须通过button组件提供的开发能力去到设置页,这里的开放能力就是open-type=“openSetting” 中的openSetting。我们点击按钮后就到了权限设置页。

    这样就可以引导用户再次授权了。

    有任何关于编程的问题都可以加我微信2501902696(备注编程开发)

    编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。

    完整的源码可以加老师微信获取,也可以关注下面老师公号,回复“地图源码” 获取。

    老师公众号

    展开全文
  • 根据地址获取经纬度

    千次阅读 2018-05-28 13:43:58
    转百度地图接口(输入地址获取经纬度)2017年10月30日 14:51:28阅读数:36381,原地址 http://www.cnblogs.com/jianglan/archive/2013/05/31/3108646.html这几天比较空闲,就接触了下百度地图的API(开发者中心链接...
    百度地图接口(输入地址获取经纬度)

    1,原地址 http://www.cnblogs.com/jianglan/archive/2013/05/31/3108646.html

    这几天比较空闲,就接触了下百度地图的API(开发者中心链接地址:http://developer.baidu.com),发现调用还是挺方便的。只要简单几步注册下,就可以获得一个Key,就能直接调用(PS:好像1.3版本前的无需注册获取key,就能直接调用api)。
      想着能结合到自己的项目中去,那也挺不错的。看了园子中的几篇文章,感觉甚好,想自己也动手试试。
    在调用百度地图API的时候,经纬度的获取必然是关键,那么怎么样获取到经纬度的值呢?这是一个最首要解决的问题。
    通过查询资料,看了几个例子,得知了调用的方法(感谢与时俱进的实例,给予很大的帮助)。站着巨人的肩膀上,就能比较快的实现功能。
      闲话不多,下面就直接给大家介绍下,具体要怎么调用百度地图API。
      首先新建一张html页面。然后引用上API:

    复制代码
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>根据地址查询经纬度</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
    </head>
    <body>
    </body>
    复制代码

    这里我直接引用了1.3的版本,要引用1.3版本以上的话要加上key:

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=您的密钥"></script>

    如此几行代码就成功引用了百度地图API。接下来就是要调用他的一些方法了:

    首先在body中添加一个div,用来加载地图用,简单写下样式。

    复制代码
    <div id="container" 
        style="position: absolute;
            margin-top:30px; 
            width: 730px; 
            height: 590px; 
            top: 50; 
            border: 1px solid gray;
            overflow:hidden;">
    </div>
    复制代码

    然后是写javascript代码,来调用api中的方法。首先创建一个地图,然后设置地图显示的中心地图,及显示的放大倍数:

    <script type="text/javascript">
        var map = new BMap.Map("container");
        map.centerAndZoom("宁波", 12);</script>

    然后,启动地图的方法缩小功能,以及地图的拖拽功能:

    map.enableScrollWheelZoom();    //启用滚轮放大缩小,默认禁用
    map.enableContinuousZoom();    //启用地图惯性拖拽,默认禁用

    为了使用地图更加方便,我们还可以添加上缩放的平移控件,以及地图的缩略图控件,并设置他要显示的位置:

    map.addControl(new BMap.NavigationControl());  //添加默认缩放平移控件
    map.addControl(new BMap.OverviewMapControl()); //添加默认缩略地图控件
    map.addControl(new BMap.OverviewMapControl({ isOpen: true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT }));   //右下角,打开

    “BMAP_ANCHOR_BOTTOM_RIGHT”为控件显示的位置,表示控件位于地图的右下角,可以按照自己的喜欢添加参数值。

    主要有一下四种:
    BMAP_ANCHOR_TOP_LEFT 表示控件定位于地图的左上角。
    BMAP_ANCHOR_TOP_RIGHT 表示控件定位于地图的右上角。
    BMAP_ANCHOR_BOTTOM_LEFT 表示控件定位于地图的左下角。
    BMAP_ANCHOR_BOTTOM_RIGHT 表示控件定位于地图的右下角。

      好了,地图的一些基本设置已经添加上了,如果要其他的功能,还可以去通过查看百度地图API的Demo来获取调用的方法(http://developer.baidu.com/map/jsdemo.htm)。

      接下来就是要是实现我们的主要功能了。
    首先,先在页面上添加两个文本框,和一个查询按钮。第一个文本框是用来输入要查询的地址,第二个文本框是用来显示查询所得的经纬度。html代码就全部写完了。

    复制代码
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>根据地址查询经纬度</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
    </head>
    <body style="background:#CBE1FF">
        <div style="width:730px;margin:auto;">   
            要查询的地址:<input id="text_" type="text" value="宁波天一广场" style="margin-right:100px;"/>
            查询结果(经纬度):<input id="result_" type="text" />
            <input type="button" value="查询" onclick="searchByStationName();"/>
            <div id="container" 
                style="position: absolute;
                    margin-top:30px; 
                    width: 730px; 
                    height: 590px; 
                    top: 50; 
                    border: 1px solid gray;
                    overflow:hidden;">
            </div>
        </div>
    </body>
    复制代码

     接下来就是要构建一个查询:

    var localSearch = new BMap.LocalSearch(map);
    localSearch.enableAutoViewport(); //允许自动调节窗体大小

    然后我们就可以开始做最关键的一步了,就是获取地址的具体经纬度:

    复制代码

    function searchByStationName() {
      var keyword = document.getElementById("text_").value;
      localSearch.setSearchCompleteCallback(function (searchResult) {
        var poi = searchResult.getPoi(0);
        document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat; //获取经度和纬度,将结果显示在文本框中
        map.centerAndZoom(poi.point, 13);
      });
      localSearch.search(keyword);
    }

    复制代码

    为了使效果更加的明显,我们还可以添加标注点到我们要查询的地址上。于是,将上面的代码可以进一步改成:

    复制代码
    function searchByStationName() {
        map.clearOverlays();//清空原来的标注
        var keyword = document.getElementById("text_").value;
        localSearch.setSearchCompleteCallback(function (searchResult) {
            var poi = searchResult.getPoi(0);
            document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
            map.centerAndZoom(poi.point, 13);
            var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));  // 创建标注,为要查询的地址对应的经纬度
            map.addOverlay(marker);
        });
        localSearch.search(keyword);
    } 
    复制代码

    我们也可以在标注上添加详情信息,使点击后能看到具体信息。于是,再一次修改代码:

    复制代码
    function searchByStationName() {
        map.clearOverlays();//清空原来的标注
        var keyword = document.getElementById("text_").value;
        localSearch.setSearchCompleteCallback(function (searchResult) {
            var poi = searchResult.getPoi(0);
            document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
            map.centerAndZoom(poi.point, 13);
            var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));  // 创建标注,为要查询的地址对应的经纬度
    map.addOverlay(marker); var content = document.getElementById("text_").value + "<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat; var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>"); marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); }); // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画 }); localSearch.search(keyword); } 
    复制代码

    好了,基本功能都实现了,下面就给大家提供完整的代码吧。

    复制代码
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>根据地址查询经纬度</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
    </head>
    <body style="background:#CBE1FF">
        <div style="width:730px;margin:auto;">   
            要查询的地址:<input id="text_" type="text" value="宁波天一广场" style="margin-right:100px;"/>
            查询结果(经纬度):<input id="result_" type="text" />
            <input type="button" value="查询" onclick="searchByStationName();"/>
            <div id="container" 
                style="position: absolute;
                    margin-top:30px; 
                    width: 730px; 
                    height: 590px; 
                    top: 50; 
                    border: 1px solid gray;
                    overflow:hidden;">
            </div>
        </div>
    </body>
    <script type="text/javascript">
        var map = new BMap.Map("container");
        map.centerAndZoom("宁波", 12);
        map.enableScrollWheelZoom();    //启用滚轮放大缩小,默认禁用
        map.enableContinuousZoom();    //启用地图惯性拖拽,默认禁用
    
        map.addControl(new BMap.NavigationControl());  //添加默认缩放平移控件
        map.addControl(new BMap.OverviewMapControl()); //添加默认缩略地图控件
        map.addControl(new BMap.OverviewMapControl({ isOpen: true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT }));   //右下角,打开
    
        var localSearch = new BMap.LocalSearch(map);
        localSearch.enableAutoViewport(); //允许自动调节窗体大小
    function searchByStationName() {
        map.clearOverlays();//清空原来的标注
        var keyword = document.getElementById("text_").value;
        localSearch.setSearchCompleteCallback(function (searchResult) {
            var poi = searchResult.getPoi(0);
            document.getElementById("result_").value = poi.point.lng + "," + poi.point.lat;
            map.centerAndZoom(poi.point, 13);
            var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));  // 创建标注,为要查询的地方对应的经纬度
            map.addOverlay(marker);
            var content = document.getElementById("text_").value + "<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat;
            var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
            marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); });
            // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
        });
        localSearch.search(keyword);
    } 
    </script>
    </html>
    展开全文
  • 如何根据具体地址获取经纬度

    千次阅读 2019-07-02 13:21:13
    根据具体地址获取经纬度 通过python调用高德地图接口,返回经纬度 代码如下: import xlrd import requests import json # 设置路径 path = './lj_distinct_data_analysis.xlsx' # 打开execl workbook = ...
  • 移动端通过H5 获取经纬度

    千次阅读 2018-10-19 17:33:08
    1、通过以下代码 获取经纬度 getlocationpoint() function getlocationpoint() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( function (position) { latitude...
  • 通过百度地图,根据地名获取经纬度,通过经纬度定位,或者直接根据地名定位,内有详解,若有问题,请留言
  • 移远的部分通信模块可以通过AT+QCELLLOC=1获取基站的经纬度,但后期的模块都要收费才能使用。也可以通过网络查询得到经纬度,百度和高德有收费的服务。网上大部分的实现接口都是收费,这个是免费的: ...
  • 微信公众号获取经纬度好几个坑,很大,不注意搞,老惨了。相关文档 这一部分,强烈建议使用官方配置好的demo,至少不会死得惨。网上好多自己封装的,理解起来头疼,demo位置在完档最下方 官方demo示例代码 下载好...
  • 坐标系说明已经点击获取经纬度功能
  • 安卓(android)使用GPS,获取经纬度

    千次阅读 2018-03-09 09:48:26
    android获取经纬度,有这个两个类需要用:1、LocationManager位置管理器2、Location位置类第一步:获取LocationManager实例locationManager = (LocationManager) mContext.getSystemService( Context.LOCATION_...
  • 这里用的是Xutils获取json数据的,网址也在里面,想用自己的框架可以换成自己的 Xutils连接:https://blog.csdn.net/qpc908694753/article/details/70463709 //经纬度 location(); private void location() ...
  • 鼠标左键在地图上单击获取坐标 b > < div > X: < input type ="text" id ="lngX" name ="lngX" value ="" />  Y: < input type ="text" id ="latY" name ="latY" value ="" /> div > < div > 城市...
  • Google Maps获取经纬度

    2010-05-08 19:10:00
    前几天遇到一个需要详细...解决这个问题,首先自然是怎么查询一个地名的经纬度呢?Google提供了什么的接口来查询呢?开始在Gmaps中找了很久,没有见到相关的函数.后来想大批量的数据使用javascript的接口来实现也不是
  • 1、既然每次都要获取经纬度,那么获取位置方法必须。同时,老用户,绝大部分情况是微信授权过的,至于新用户,反正都是得执行一遍。所以,我进入后直接获取位置经纬度。 2、如果获取经纬度失败,那么有两种情况,一...
  • 利用百度API(js),怎样通过地址获取经纬度 根据经纬度找到具体地址:http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥如:http:// ... 利用百度API(JavaScript 版)实现在地图...
  • 支持打点获取坐标,环形标记,自定义形状标记 效果如下 直接上代码: <!DOCTYPE html> <html> <script src="js/jquery-2.1.3.min.js"></script> <head> <meta ...
  • 什么是Geocoding? ...主要服务那些非网页程序...用户只需在请求的url字串中拼接好关键字或者经纬度信息,即可获取到相应的百度经纬度或者结构化地理信息。 Geocoding API有哪些功能? Geocoding API包括地址...
  • //获取经纬度了 self.latitude.text=@(loc.coordinate.latitude).stringValue; self.longtitude.text=@(loc.coordinate.longitude).stringValue; } }]; /**该方法可以固定一个范围内查找,防止重名的情况 ...
  • 根据经纬度找到具体地址:http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥如:http://api.map.baidu.com/geocoder?location=31.407452,121.490523&output=json...
  • 链家二手房爬虫和获取经纬度

    千次阅读 2019-03-28 16:17:06
    获取经纬度 import json from urllib.request import urlopen, quote import pandas as pd import csv xlsx_1 = pd.ExcelFile('bbhu.xlsx') data1 = xlsx_1.parse('Sheet2') url = '...
  • 根据百度地图api 关键字检索获取地址的经纬度 <div id='container'></div> <el-button class="box-button" type="primary" @click="latlng">维护经纬度</el-button> export default { ...
  • 百度地图接口(输入地址获取经纬度

    万次阅读 多人点赞 2017-10-30 14:51:28
    1,原地址 http://www.cnblogs.com/jianglan/archive/2013/05/31/3108646.html 这几天比较空闲,就接触了...只要简单几步注册下,就可以获得一个Key,就能直接调用(PS:好像1.3版本前的无需注册获取key,就能直接调用ap
  • 获取百度经纬度

    2018-03-14 18:07:24
    获取百度经纬度的代码,用C#写的,判断当前经纬度是否在范围内
  •  * 获得经纬度函数    * */     public   void  getLongitudeAndLatitude() {   setGPS( true );     LocationManager loctionManager;   String contextService=Context....
  • 说明: 用了原生的wx.getLocation 定位功能获取 经纬度,然后通过高德解析位置(可以获取位置信息,及附近地址,天气等) 准备:需要下载高德小程序位置组件https://lbs.amap.com/api/wx/download 配置:在创建的...
  • 文章目录环境相关代码效果展示注意事项 环境 Hololen2 Windows 10 Unity 2019.4.19f1c1 Visual Studio 2019 MRTK 2.5.4 相关代码 using System.Collections;...public class LocationService : MonoBehaviour ...
  • 开放API,可是在只须要经纬度,或者城市,街道地址等信息。并不须要提供预览地图。地图界面的应用中。这时,不须要使用百度地图。高德地图。这样做只会添加apk的体积。怎么办呢? 事实上LocationManager,Geocoder...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,751
精华内容 1,100
关键字:

怎样获取经纬度