精华内容
下载资源
问答
  • 如何实时获取鼠标的地理坐标

    千次阅读 2013-10-08 15:38:32
    在系统中,鼠标滑过就会获取到鼠标所在位置地理坐标值。实现效果如下:  这个效果的实现是基于地图上鼠标经过事件的。在给地图注册了MouseMove事件后,在该事件中添加如下代码即可实现。 在这段代码中,就是将...

    在系统中,鼠标滑过就会获取到鼠标所在位置的地理坐标值。实现效果如下: 

    这个效果的实现是基于地图上鼠标经过事件的。在给地图注册了MouseMove事件后,在该事件中添加如下代码即可实现。

    在这段代码中,就是将鼠标经过点的位置信息(相对于屏幕坐标)转为对应参考系的地理坐标信息,即:ScreenToMap,这个方法是地图控件自带的方法。

    private void myMap_MouseMove(object sender, MouseEventArgs e)
            {
                if (myMap.Extent != null)
                {
                    System.Windows.Point screenPoint = e.GetPosition(myMap);
    
                    ESRI.ArcGIS.Client.Geometry.MapPoint mapPoint = myMap.ScreenToMap(screenPoint);
    
                    if (mapPoint != null)
                        MapCoordsTextBlock.Text = string.Format("平面坐标: X = {0}, Y = {1}",
                            Math.Round(mapPoint.X, 4).ToString(), Math.Round(mapPoint.Y, 4).ToString());
                }
            }
    


     

    展开全文
  • 微信如何根据经纬度坐标查询具体地理位置 好多人会问为什么微信高级接口获取坐标信息位置不准,主要原因不是微信获取的不准,而是微信获取的是gps坐标,如果你直接用百度或google的api去解析的话肯定会出现误差的...

    微信如何根据经纬度坐标查询具体地理位置
    好多人会问为什么微信高级接口获取的坐标信息位置不准,主要原因不是微信获取的不准,而是微信获取的是gps坐标,如果你直接用百度或google的api去解析的话肯定会出现误差的。

    首先你需要吧gps位置转换成google或者百度的坐标,然后在通过转换后的坐标去获取准确的地理位置。

    方法一:gps转换成google或者百度坐标,转换gps的接口 http://map.yanue.net/gps.html

    方法二:gps转换成百度坐标

    function getgps(lats,lats,lngs, $gps=false, $google=false)//gpg 转百度坐标
    {
    lat=lat=lats;
    lng=lng=lngs;
    if($gps)
    KaTeX parse error: Expected 'EOF', got '&' at position 70: …/convert?from=0&̲to=4&x=lng&y=lat");elseif(lat"); else if(google)
    KaTeX parse error: Expected 'EOF', got '&' at position 70: …/convert?from=2&̲to=4&x=lng&y=lat");elsereturnarray(lat"); else return array(lat,$lng);
    arr=(array)jsondecode(arr=(array)json_decode(c);
    if(!$arr[‘error’])
    {
    lat=base64decode(lat=base64_decode(arr[‘y’]);
    lng=base64decode(lng=base64_decode(arr[‘x’]);
    }
    return array(lat,lat,lng);
    }

    下面是通过百度坐标获取地理位置信息

    返回josn格式的:

    http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1

    返回xml格式的:

    http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=xml&pois=1

    展开全文
  • 在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息。本文分为以下二个部分:生成JS-SDK权限验证签名使用地理位置接口获取坐标一、微信JS-SDK1. 获得Access Tokenaccess token的获得方法...

    在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息。

    本文分为以下二个部分:生成JS-SDK权限验证签名

    使用地理位置接口获取坐标

    一、微信JS-SDK

    1. 获得Access Token

    access token的获得方法在前面有介绍,详情见 微信公众平台开发(26) ACCESS TOKEN

    2. 获取jsapi_ticket

    生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

    参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):

    用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket),接口地址如下

    https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

    成功返回如下JSON:{

    "errcode":0,

    "errmsg":"ok",

    "ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",

    "expires_in":7200

    }

    获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。

    3. 签名算法实现

    签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

    即signature=sha1(string1)。 示例:

    noncestr=Wm3WZYTPz0wzccnW

    jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg

    timestamp=1414587457url=http://mp.weixin.qq.com?params=value

    步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:

    jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

    步骤2. 对string1进行sha1签名,得到signature:

    0f9de62fce790f9a083d5c99e95740ceb90c27ed

    完整代码如下

    class JSSDK {

    private $appId;

    private $appSecret;

    public function __construct($appId, $appSecret) {

    $this->appId = $appId;

    $this->appSecret = $appSecret;

    }

    public function getSignPackage() {

    $jsapiTicket = $this->getJsApiTicket();

    // 注意 URL 一定要动态获取,不能 hardcode.

    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

    $timestamp = time();

    $nonceStr = $this->createNonceStr();

    // 这里参数的顺序要按照 key 值 ASCII 码升序排序

    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

    $signature = sha1($string);

    $signPackage = array(

    "appId" => $this->appId,

    "nonceStr" => $nonceStr,

    "timestamp" => $timestamp,

    "url" => $url,

    "signature" => $signature,

    "rawString" => $string

    );

    return $signPackage;

    }

    private function createNonceStr($length = 16) {

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    $str = "";

    for ($i = 0; $i < $length; $i++) {

    $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

    }

    return $str;

    }

    private function getJsApiTicket() {

    // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例

    $data = json_decode(file_get_contents("jsapi_ticket.json"));

    if ($data->expire_time < time()) {

    $accessToken = $this->getAccessToken();

    // 如果是企业号用以下 URL 获取 ticket

    // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";

    $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";

    $res = json_decode($this->httpGet($url));

    $ticket = $res->ticket;

    if ($ticket) {

    $data->expire_time = time() + 7000;

    $data->jsapi_ticket = $ticket;

    $fp = fopen("jsapi_ticket.json", "w");

    fwrite($fp, json_encode($data));

    fclose($fp);

    }

    } else {

    $ticket = $data->jsapi_ticket;

    }

    return $ticket;

    }

    private function getAccessToken() {

    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例

    $data = json_decode(file_get_contents("access_token.json"));

    if ($data->expire_time < time()) {

    // 如果是企业号用以下URL获取access_token

    // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";

    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";

    $res = json_decode($this->httpGet($url));

    $access_token = $res->access_token;

    if ($access_token) {

    $data->expire_time = time() + 7000;

    $data->access_token = $access_token;

    $fp = fopen("access_token.json", "w");

    fwrite($fp, json_encode($data));

    fclose($fp);

    }

    } else {

    $access_token = $data->access_token;

    }

    return $access_token;

    }

    private function httpGet($url) {

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_TIMEOUT, 500);

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);

    curl_close($curl);

    return $res;

    }

    }

    二、网页获得地理位置坐标

    1. 绑定域名

    先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

    6a0fd67e037ddfa519c99211899a4a12.png

    2. 获取签名包

    require_once "jssdk.php";

    $jssdk = new JSSDK("yourAppID", "yourAppSecret");

    $signPackage = $jssdk->GetSignPackage();

    ?>

    3. 引入JS文件

    在需要调用JS接口的页面引入如下JS文件,(支持https):

    4.通过config接口注入权限验证配置

    所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用。

    wx.config({

    debug: false,

    appId: '<?php echo $signPackage["appId"];?>',

    timestamp: <?php echo $signPackage["timestamp"];?>,

    nonceStr: '<?php echo $signPackage["nonceStr"];?>',

    signature: '<?php echo $signPackage["signature"];?>',

    jsApiList: [ // 所有要调用的 API 都要加到这个列表中

    'checkJsApi', 'openLocation', 'getLocation'

    ]

    });

    5. 通过ready接口处理成功验证

    地理位置需要在页面加载时就调用,需要把相关接口放在ready函数中调用来确保正确执行

    wx.ready(function () {

    });

    5.1 通过checkJsApi判断当前客户端版本是否支持指定获取地理位置

    wx.checkJsApi({

    jsApiList: [

    'getLocation'

    ],

    success: function (res) {

    // alert(JSON.stringify(res));

    // alert(JSON.stringify(res.checkResult.getLocation));

    if (res.checkResult.getLocation == false) {

    alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');

    return;

    }

    }

    });

    5.2. 使用getLocation接口获取地理位置坐标

    wx.getLocation({

    success: function (res) {

    var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90

    var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。

    var speed = res.speed; // 速度,以米/每秒计

    var accuracy = res.accuracy; // 位置精度

    },

    cancel: function (res) {

    alert('用户拒绝授权获取地理位置');

    }

    });

    三、实现效果

    弹出请求获取页面

    2e49432bc5b45c4034f46f0d867402f5.png

    JS成功获取地理位置参数

    982ba2402eb5be999e3774f4bdcfee1b.png

    更多微信公众平台开发网页获取用户地理位置相关文章请关注PHP中文网!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • Android的强大表现在各个方面,在这里介绍一下其中的一个自动获取所在地理位置坐标的功能。Android中通过LocationManager来获取地理位置等相关信息的。  首先,需要获取LocationManager实例。  //获得当前位置的...

    Android的强大表现在各个方面,在这里介绍一下其中的一个自动获取所在地理位置坐标的功能。Android中通过LocationManager来获取地理位置等相关信息的。

      首先,需要获取LocationManager实例。

      //获得当前位置的坐标

      LocationManager locationManager = (LocationManager)

      getSystemService(LOCATION_SERVICE);//获取LocationManager的一个实例

      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,

      10000, 0, locationListener);

      /*注册一个周期性的位置更新 每隔1000ms更新一次,并且不考虑位置的变化。

      最后一个参数是LocationListener的一个引用*/

      Location location = locationManager.getLastKnownLocation

      (LocationManager.GPS_PROVIDER);

      String latitude = Double.toString(location.getLatitude());//经度

      String longitude = Double.toString(location.getLongitude());//纬度

      String altitude = Double.toString(location.getAltitude());//海拔

      //输出文字

      TextView tv = (TextView) this.findViewById(R.id.local);

      tv.setText("latitude:"+latitude+" longitude:"+longitude

      +" altitude:"+altitude+" ");

      实现LocationListener的引用

      private final LocationListener locationListener = new LocationListener() {

      public void onLocationChanged(Location location) {

      //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发

      if (location != null) {

      String latitude = Double.toString(location.getLatitude());//经度

      String longitude = Double.toString(location.getLongitude());//纬度

      String altitude = Double.toString(location.getAltitude());//海拔

      //输出文字

      TextView tv = (TextView) findViewById(R.id.local);

      tv.setText("latitude:"+latitude+" longitude:"

      +longitude+" altitude:"+altitude+" ");

      }

      }

      public void onProviderDisabled(String provider) {

    第1页 第2页 

     

      Android的强大表现在各个方面,在这里介绍一下其中的一个自动获取所在地理位置坐标的功能。Android中通过LocationManager来获取地理位置等相关信息的。

      首先,需要获取LocationManager实例。

      //获得当前位置的坐标

      LocationManager locationManager = (LocationManager)

      getSystemService(LOCATION_SERVICE);//获取LocationManager的一个实例

      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,

      10000, 0, locationListener);

      /*注册一个周期性的位置更新 每隔1000ms更新一次,并且不考虑位置的变化。

      最后一个参数是LocationListener的一个引用*/

      Location location = locationManager.getLastKnownLocation

      (LocationManager.GPS_PROVIDER);

      String latitude = Double.toString(location.getLatitude());//经度

      String longitude = Double.toString(location.getLongitude());//纬度

      String altitude = Double.toString(location.getAltitude());//海拔

      //输出文字

      TextView tv = (TextView) this.findViewById(R.id.local);

      tv.setText("latitude:"+latitude+" longitude:"+longitude

      +" altitude:"+altitude+" ");

      实现LocationListener的引用

      private final LocationListener locationListener = new LocationListener() {

      public void onLocationChanged(Location location) {

      //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发

      if (location != null) {

      String latitude = Double.toString(location.getLatitude());//经度

      String longitude = Double.toString(location.getLongitude());//纬度

      String altitude = Double.toString(location.getAltitude());//海拔

      //输出文字

      TextView tv = (TextView) findViewById(R.id.local);

      tv.setText("latitude:"+latitude+" longitude:"

      +longitude+" altitude:"+altitude+" ");

      }

      }

      public void onProviderDisabled(String provider) {

    第1页 第2页 

     

      接上页

      // Provider被disable时触发此函数,比如GPS被关闭

      }

      public void onProviderEnabled(String provider) {

      // Provider被enable时触发此函数,比如GPS被打开

      }

      public void onStatusChanged(String provider, int status, Bundle extras) {

      // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数

      }

      };

      最后我们在AndroidManifest.xml中加入GPS权限

      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

      如果是在模拟器中调试,可以打开”Window” ?>”Show View” 中打开”Emulator Control” View即可手动设置,或通过KML和GPX文件来设置一个坐标。

      或者使用geo命令,开始?> 运行?>输入 telnet 5554,然后在命令行下输入 geo fix -39.4 116.9 326 ,这三个参数分别代表了经度、纬度和海拔(海拔可不写)

      这样我们就可以获取所在位置的坐标了

    第1页 第2页 

     

    展开全文
  • 根据ip地址获取地理位置 假设您需要知道访问您网站的人来自哪个国家/地区,因为您拥有一个国际化的网站,并根据该国家/地区显示不同的内容。 您可以询问用户。 无论如何,您可能都想拥有该功能以确保访问者可以控制...
  • 好多人会问为什么微信...首先你需要吧gps位置转换成google或者百度的坐标,然后在通过转换后的坐标获取准确的地理位置。方法一:gps转换成google或者百度坐标,转换gps的接口 http://map.yanue.net/gps.html方法...
  • 关键字:微信公众平台 JSSDK获取地理位置接口网页获取用户地理位置getLocation作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html在这篇微信公众平台开发教程中,我们将介绍如何在...
  • 关键字:微信公众平台 JSSDK获取地理位置接口网页获取用户地理位置getLocation作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html在这篇微信公众平台开发教程中,我们将介绍如何在...
  • 如何获取微信好友的地理位置信息

    千次阅读 2017-04-25 23:16:00
    方倍工作室微信公众账号提供网页版定位型漂流瓶功能,可以精确定位到打开标瓶的用户坐标地址。   一位中年男子因和老婆吵架,老婆一气之下离家出走,电话不接,每天发微信也不回,他想通过微信知道老婆在哪。 一...
  • 本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能。 一、获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理...
  • 在上一篇文章【PHP用腾讯地图获取指定地址坐标之创建key的方法】中已经为大家介绍了,如何申请创建key(开发者密钥),那么下面我们就结合具体的代码示例,为大家详细介绍PHP使用腾讯地图获取指定坐标即经纬度的方法。...
  • 摘要:每一个联网的设备都有一个IP地址,移动设备也不例外,如何定位Android手机当前的地理位置呢?很简单,我们依然可以利用 IP地址来获取Android手机的当前位置,可以精确到经纬度。 本文就直接以代码的方式演示...
  • 关键字:微信公众平台 JSSDK获取地理位置接口网页获取用户地理位置getLocation作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html在这篇微信公众平台开发教程中,我们将介绍如何在...
  • 微信公众平台开发网页获取用户地理位置

    万次阅读 多人点赞 2016-08-04 21:40:22
    在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息。 本文分为以下二个部分: 生成JS-SDK权限验证签名使用地理位置接口获取坐标   一、微信JS-SDK 1. 获得Access Token access ...
  • 微信公众平台 JSSDK 获取地理位置接口 网页获取用户地理位置 getLocation作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-web-location.html 在这篇微信公众平台开发教程中,我们将介绍如何在...
  • 在小程序开发中我们可以根据 小程序API提供的wx.getLocation(Object object)...获取当前的地理位置(坐标)、速度。 那么有了坐标之后,如何转换成对应的位置名称呢? 腾讯地图为我们提供了此功能https://l...
  • //在地图上单击画点varmap=$find('Map1');map.getGeometry(ESRI.ADF.Graphics.ShapeType.Point,usePoint,null...//获取鼠标点击的位置的地图坐标funct...//在地图上单击画点var map = $find('Map1');map.getGeometry...
  • 最近在微信平台开发时,涉及到的问题。...2、使用html5的获取地理位置方案。缺点:坐标不太精准,且部分手机的微信浏览器不支持html5。优点:不需用户太多参与。 3、使用百度地图的ip定位。缺点:坐标差距太
  • 微信如何根据经纬度坐标查询具体地理位置 好多人会问为什么微信高级接口获取坐标信息位置不准,主要原因不是微信获取的不准,而是微信获取的是gps坐标,如果你直接用百度或google的api去解析的话肯定会出现误差...
  • 应用场景基于地理位置进行精准的推荐和引导到店可适用于:酒店、餐馆(饭店)、教育培训校区等一、基础条件:存储门店地址需在后台存储各门店的地址,每个门店需包括1、坐标:经纬度,用于在所有地图上找到唯一的...
  • 如何根据经纬度获取地址名称

    万次阅读 2020-11-21 12:54:02
    * 获取地理位置名称 * * param location * 经纬度坐标,经度在前,纬度在后,经纬度间以“,”分割 * return */ public static String getAddressNameByGeocoder1(String location) { String jsonString...
  • 关于坐标系我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能并不是在同一个坐标系下。高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系(又称火星坐标)百度地图...

空空如也

空空如也

1 2 3 4 5 6
收藏数 104
精华内容 41
关键字:

如何获取地理位置坐标