C#的百度地图开发(五)IP定位

前面我们已经实现了坐标定位及前端显示,而坐标的获取一般只在移动设备上,对于PC端难以得到。但是在PC端,我们可以得到相应的IP。在得到了IP之后,我们就可以进行定们了。代码如下:

public class BaiduMap
 {
        /// <summary>
        /// 依据IP获取定位信息的URL模板。
        /// 参数1:百度地图API的KEY。
        /// 参数2:IP。
        public const string IP_LOCATION_URL_TEMPLATE = "http://api.map.baidu.com/location/ip?ak={0}&ip={1}&coor=bd09ll";

   /// <summary>
        /// 依据IP获取定位信息
        /// </summary>
        /// <param name="coordinate">坐标</param>
        /// <returns></returns>
        public static IpLocationResult FetchLocation(String ip)
        {
            if (String.IsNullOrWhiteSpace(ip))
            {
                return null;
            }
            String ipLocationUrl = String.Format(IP_LOCATION_URL_TEMPLATE,
                                                 MAP_KEY_BAI_DU,
                                                 ip);
            String responseText = RequestHelper.RequestUrl(ipLocationUrl, null);
            if (String.IsNullOrWhiteSpace(responseText))
            {
                return null;
            }
            IpLocationResult locationResult = null;
            try
            {
                locationResult = Newtonsoft.Json.JsonConvert.DeserializeObject<IpLocationResult>(responseText);
            }
            catch (Exception)
            {
                return null;
            }

            return locationResult;
        }
        #endregion
}

注;

(1).使用const定义Api的URL模板。

(2).百度KEY自行申请后填入。

(3).IpLOcationResult接收json数据的反序列化结果,该类的实现如下

namespace MapApi.Baidu
{
    [Serializable]
    public  class IpLocationResult
    {
        /// <summary>
        /// 状态
        /// </summary>
        public String status { get; set; }

        /// <summary>
        /// 地址
        /// </summary>
        public String address { get; set; }

        /// <summary>
        /// 内容
        /// </summary>
        public IpLocationResult_Content content { get; set; }
    }

    #region IpLocationResult_Content
    /// <summary>
    /// 定位结果文本
    /// </summary>
    [Serializable]
    public class IpLocationResult_Content
    {
        /// <summary>
        /// 地址
        /// </summary>
        public String address { get; set; }

        /// <summary>
        /// 地址明细
        /// </summary>
        public IpLocationResult_Content_AddressDetail address_detail { get; set; }

        /// <summary>
        /// 经纬度
        /// </summary>
        public Coordinate point { get; set; }
    }

    /// <summary>
    /// 定位结果文本之地址明细
    /// </summary>
    [Serializable]
    public class IpLocationResult_Content_AddressDetail
    {
        /// <summary>
        /// 城市
        /// </summary>
        public String city { get; set; }

        /// <summary>
        /// 城市代码
        /// </summary>
        public String city_code { get; set; }

        /// <summary>
        /// 地区
        /// </summary>
        public String district { get; set; }

        /// <summary>
        /// 省份
        /// </summary>
        public String province { get; set; }

        /// <summary>
        /// 街道
        /// </summary>
        public String street { get; set; }

        /// <summary>
        /// 门牌号
        /// </summary>
        public String street_number { get; set; }
    }
    #endregion
}

测试代码如下:

   protected void btnTest_Click(object sender, EventArgs e)
        {
            String ip = "47.153.128.1";
            IpLocationResult ipLocationResult = BaiduMap.FetchLocation(ip);
            Alert.Show(ipLocationResult.status.ToString());
        }

测试结果如下图;

注:

(1).可以看到依据IP已经得到了定位的结果。不过IP定位的结果精度只能到城市,所以是一个精略的定位结果,如果需要精确定位,还是要使用经纬度坐标。

(2).从结果中可以看到该IP对应的经纬度,所以可以通过这个经纬度在前端的地图上显示定位(具体的可以参照前面的文章)。

那对于网站,要如何去得到这些IP的值呢?请参看后文《C#的百度地图开发(六)用户访问网页的IP记录》。

转载请注明出处。

时间: 2024-10-23 13:49:07

C#的百度地图开发(五)IP定位的相关文章

PHP利用百度地图API进行IP定位和GPS定位

最近在做一个手机端的webapp地图应用,而核心内容当然是定位了,但是定位的话有几种方式,IP定位,GPS定位,基站定位(这个貌似webapp用不了), 那么剩下核心的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,无法直接显示在地图上. 后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址:http://developer.baidu.com/map/ 百度地图API的调用需要申请KEY,这里就不具体介绍了,直接贴上本人写了两

百度地图API的IP定位城市和浏览器定位(转)

百度地图API提供了Geolocation 和 LocalCity两个服务类. 这俩API可以分别供用户在JavaScript中进行定位和城市确认. 1 本质上,Geolocation这个类是使用了支持HTML5浏览器提供的Geolocation API 来进行定位的.目前Internet Explorer 9.Firefox.Chrome.Safari 以及 Opera 支持地理定位(因为他们支持HTML5). 2 本质上,LocalCity这个类是利用用户IP地址去百度数据库里查询得到IP所

使用百度地图开发一个导航定位demo-android学习之旅(77)

首先介绍如何导入百度地图 步骤(其实官方文档写的很清楚了)http://developer.baidu.com/map/index.php?title=androidsdk/guide/introduction 1.注册开发者账号 2.注册你的应用,登陆控制台,然后输入数字签名和包名,得到开发Id 3. 下载android sdk进行配置,我用的是Android studio,配置步骤是,在app底下的libs下导入,没有的话新建,在src/main/目录下新建jniLibs目录,放下那些搜文件

百度地图开发之【定位】

在前面几次我们分别完成了数据检索和线路规划的功能,但是如果我们不知道自己位置,检索起来说是不是会很麻烦呢? 知道自己位置就可以根据自己的位置进行检索和路线规划. 定位服务 在读地图的定位服务是与基本地图服务分开的所以需要引入另外的so文件盒jar包,如果你选择的是复合包的话,只用一如so文件就OK了. 首先在清单文件中加上如下的服务 <service android:name="com.baidu.location.f" android:enabled="true&qu

百度地图开发之获取定位地点

在前面几次我们分别完成了数据检索和线路规划的功能,但是如果我们不知道自己位置,检索起来说是不是会很麻烦呢? 知道自己位置就可以根据自己的位置进行检索和路线规划. 定位服务 在读地图的定位服务是与基本地图服务分开的所以需要引入另外的so文件盒jar包,如果你选择的是复合包的话,只用一如so文件就OK了. 首先在清单文件中加上如下的服务 <span class="sy0" style="color: rgb(51, 153, 51);"><</s

php用百度地图API进行IP定位和GPS定位

<?php /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key?application=key(需要先注册百度开发者账号) * Date: 2015-07-30 * Author: fdipzone * Ver: 1.0 * * Func: * Public getAddressComponent 根据地址获取国家.省份.城市及周边数据 * Pri

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

[android] 百度地图开发 (二).定位城市位置和城市POI搜索

一. 百度地图城市定位和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置.定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?       通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法可以获取Location对象,再定位经纬度设置其为地图中心即可显示当

Arcgis andoid开发之应用百度地图接口实现精准定位与显示

怀着激动.兴奋的心情,在这个漫天柳絮的季节写下了这片博文,为什么呢,因为困扰我很久的一个技术性的问题得到了解决,发次博文,供大家参观.学习,同时,也以慰藉我长期困扰的心情,好了,废话不再,言归正传,看看这到底是个什么东西? 首先,简单地介绍一下功能:1.离线地图的加载:2.GPS的定位与显示.文字比较模糊,看看实际的效果图: 功能其实很简单,下面解释一下实现思路: 1.布局 <?xml version="1.0" encoding="utf-8"?> &