新普金娱乐网址


地理《老鼠和船长》

地理外从不觉得温馨辛苦,你们还惦记多矣

地理Winform下的地图开发控件(GMap.NET)使用体验

  • 九月 14, 2018
  • 地理
  • 没有评论

网上有多关于html5 geolocation 获取地理定位的方式,我尝试了下,只有当IE
edge浏览器可成功获取到,在chrome,firefox,手机端的safari,QQ浏览器,微信浏览器,都回来一样的错误信息:

咱先看GMap.NET的概念:

POSITION_UNAVAILABLE

GMap.NET是一个有力、免费、跨平台、开源的.NET控件,它在Windows Forms
和WPF环境遭到能由此Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo,
SigPac等实现寻找路径、地理编码和地图显示效果,并支持缓存和运作在Mobile环境面临。

网上的点子大概是这样的:

GMap.NET是一个开源之GEO地图定位以及钉程序。就如谷歌地图、雅虎地图一样,可以自行测算两地的相距,定位经纬度,与Google地图不同之是,该项目是树立以C#言语WinForm基础及之。可以对地图放大缩小,进行城市标志相当于。

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;  
  }  
}  

GMap.NET的门类地址是http://greatmaps.codeplex.com/ ,我们好下载相关的事例和源码进行上与钻研。我于Google上抄了有关的类,好像介绍的篇章不多,不过未影响是控件的有力和易用。我们事先看看她的界面截图:

博到的是经纬度,所以只要调百度或者谷歌的地图api,来更换为城。

地理 1

我此品尝返回错误信息的原委我猜可能是html5
默认调用之谷歌的接口,会发出平安范围,所以我此以了腾讯的api实现。

GMap.NET号称是可以支撑特别多种地形图来源之,不过自己试了转,好像有一些是有些问题,最好的效益是GoogleMapChina,如齐图所展示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<!DOCTYPE html>
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>前端定位模块</title> 
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <style>
        * {
            margin: 0;
            padding: 0;
            border: 0;
        }
        body {
            position: absolute;
            width: 100%;
            height: 100%;
            text-align: center;
        }
        #pos-area {
            background-color: #009DDC;
            margin-bottom: 10px;
            width: 100%;
            overflow: scroll;
            text-align: left;
            color: white;
        }
        #demo {
            padding: 8px;
            font-size: small;
        }
        #btn-area {
            height: 100px;
        }
        button {
            margin-bottom: 10px;
            padding: 12px 8px;
            width: 42%;
            border-radius: 8px;
            background-color: #009DDC;
            color: white;
        }
    </style>
    <script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
</head>
<body>
    <div id="pos-area">
        <p id="demo">点击下面的按钮,获得对应信息:<br /></p>
    </div>

    <div id="btn-area">
        <button onClick="geolocation.getLocation(showPosition, showErr, options)">获取精确定位信息</button>
        <button onClick="geolocation.getIpLocation(showPosition, showErr)">获取粗糙定位信息</button>
        <button onClick="showWatchPosition()">开始监听位置</button>
        <button onClick="showClearWatch()">停止监听位置</button>
    </div>
    <script type="text/JavaScript">
        var geolocation = new qq.maps.Geolocation("OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77", "myapp");

        document.getElementById("pos-area").style.height = (document.body.clientHeight - 110) + 'px';

        var positionNum = 0;
        var options = {timeout: 8000};
        function showPosition(position) {
            positionNum ++;
            document.getElementById("demo").innerHTML += "序号:" + positionNum;
            document.getElementById("demo").appendChild(document.createElement('pre')).innerHTML = JSON.stringify(position, null, 4);
            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
        };

        function showErr() {
            positionNum ++;
            document.getElementById("demo").innerHTML += "序号:" + positionNum;
            document.getElementById("demo").appendChild(document.createElement('p')).innerHTML = "定位失败!";
            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
        };

        function showWatchPosition() {
            document.getElementById("demo").innerHTML += "开始监听位置!<br /><br />";
            geolocation.watchPosition(showPosition);
            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
        };

        function showClearWatch() {
            geolocation.clearWatch();
            document.getElementById("demo").innerHTML += "停止监听位置!<br /><br />";
            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
        };
    </script>
</body>
</html>

 我于是GoogleMapChina可以加大至十分详细的马路地理图,做了一个地方询问的例证,如下所示:

马上是腾讯api接口的演示,很好用,很适合wap端网站定位实现

地理 2

 控件可以绘出两地的行车路线或步行线路等,而且能算是有两地的离开,不过对此地理编码的解析好像不是大确切,也赢得不顶公交线路等信息,不过虚与委蛇一般的采用,应该是蛮不错的了。

夫控件默认使用了右键按停作为拖动,和GoogleMap用鼠标左键作为拖动有硌未极端一致(不过好经this.gMapControl1.DragButton

MouseButtons.Left;来贯彻左键拖动),两者皆能支持滚轮放大缩小的操作。控件还支持经纬度的精确定位,绘制图标(支持绿色、红色的图标、十字符号等标志),支持中心点移动 ,导出地图图片等效果。由于地图控件支持路线的绘图,所以当支持一般的GIS应用被的轨迹回放功能的。由于地图控件支持鼠标位置及经纬度坐标的易职能,因此,可以擅自取到相关的中纬度信息。

这Winform的地图控件,虽然相比Web的GoogleMap来说,很多效应还免持有,但是于普通的MapX和MapXtreme或者ArcGis等风的GIS来说,不用付太多的花销(甚至无用付费用),就可利用上精致的地形图,不得不说是一个好信息。

 

 

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图