zoukankan      html  css  js  c++  java
  • C#通过Google Map获取给定地名的经纬度值

    改写了一个方便的获取经纬度信息的类Geo,

    其中Latitude和Longtitude分别是纬度和经度。其中最重要的构造函数就是传入地名,

    通过Webrequest从Google Map获得经纬度值,

    在含有地理位置信息的项目里可以很方便的调用,即Geo g = new Geo("北京师范大学");

    然后g.Latitude和g.Longtitude就是北京师范大学的纬度和经度了,

    它们分别是39.9614580,116.3692820。Geo的实现如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;

    namespace 获取经纬度
    {
        
    /// 
        
    /// a class for latitude and longtitude
        
    /// 
        [Serializable]
        
    public class Geo
        {
            
    /// 
            
    /// latitude
            
    /// 
            private string _latitude = "";
     
            
    /// 
            
    /// longtitude
            
    /// 
            private string _longtitude = "";
     
            
    /// 
            
    /// default constructor
            
    /// 
            public Geo()
            {
     
            }
     
            
    /// 
            
    /// construct geo given latitude and longtitude
            
    /// 
            public Geo(string latitude, string longtitude)
            {
                _latitude 
    = latitude;
                _longtitude 
    = longtitude;
            }
            
            
    /// 
            
    /// construct geo given name of a place
            
    ///  
            public Geo(string location)
            {
                
    string output = "csv";
                
    string url = string.Format("http://maps.google.com/maps/geo?q={0}&output={1}", location, output);
                
    try
                {
                    HttpWebRequest request 
    = (HttpWebRequest)WebRequest.Create(url);
                    
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        
    using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                        {
                            
    string[] tmpArray = sr.ReadToEnd().Split(',');
                            _latitude 
    = tmpArray[2];
                            _longtitude 
    = tmpArray[3];
                        }
                    }
                }
                
    catch (System.Net.Sockets.SocketException ex)
                {
                    Console.WriteLine(
    "网络中断");
                }
                
    catch (Exception ex)
                {
                    
    //throw ex;
                    Console.WriteLine("异常类型:{0}", ex.GetType());
                    Console.WriteLine(
    "异常信息:{0}", ex.Message);
                    Console.WriteLine(
    "异常来源:{0}", ex.Source);
                    Console.WriteLine(
    "异常堆栈:{0}", ex.StackTrace);
                    Console.WriteLine(
    "内部异常:{0}", ex.InnerException);
                }
            }
     
            
    /// 
            
    /// get latitude
            
    /// 
            public string Latitude
            {
                
    get { return _latitude; }
                
    set { _latitude = value; }
            }
     
            
    /// 
            
    /// get longtitude
            
    /// 
            public string Longtitude
            {
                
    get { return _longtitude; }
                
    set { _longtitude = value; }
            }
        }
    }
  • 相关阅读:
    prototype
    JS中我们为什么要new个实例而不直接执行
    购物车,实现增删改查;无bug,还有一个直接修改购物车数量功能未实现
    jquery中判断复选框有没有被选上
    git
    scss
    gulp基本操作
    nodejs,,一些基本操作--server。js
    node.js介绍及简单例子
    自己定义jquery插件轮播图
  • 原文地址:https://www.cnblogs.com/lizhao/p/1990427.html
Copyright © 2011-2022 走看看