摘要: 终于开始可以写代码了,手都开始痒了。这里的代码仅仅是在chrome检测过,我可以肯定的是IE10以下浏览器是行不通,我一直在考虑,是不是使用IE禁止看我的篇博客,就是这群使用IE的人,给我加了很多工作量。 一个地图的基本动作,无非就是加载数据,平移,放大与缩小。这篇博客主要是通过一张图片的方式来模拟一下。 我这里认为大家都稍微了解甚至熟悉canvas的一些API,就不具体说,每一个参数代表什么意思了。 图片加载平移放大缩小示例 var canvas,context;function int(){ canvas=document.getElementById... 阅读全文
posted @ 2013-12-06 14:06 HPhone 阅读(34044) 评论(5) 推荐(9) 编辑
摘要: 上一篇也说到瓦片,我们为什么使用瓦片?这一篇主要是关于如何拼接地图? 下面的一张图,可以一眼明了,地图是如何切割以及拼接的。 瓦片信息 瓦片信息包括切图原点,瓦片大小,格式,分辨率以及分辨率级别等。 切图原点,一般是整个坐标系的最左上角,比如说,web墨卡托是[-20037508.3427892, 20037508.3427892]。切图原点右侧列数是正数,左侧的列数是负数,下侧行数是正数,上侧行数是负数。 瓦片的宽度、高度,目前互联网最常见的瓦片宽度和高度都是256像素。 瓦片格式,可能是png,jpg等。 分辨率,这里不是指电脑的分辨率。而这里意思是一像素代表多少... 阅读全文
posted @ 2013-12-02 21:50 HPhone 阅读(10846) 评论(5) 推荐(8) 编辑
摘要: 之前一直想使用HTML5技术全新做一套地图API,可是苦于时间和精力,迟迟未有行动。后来下定决心,利用下班和周末做出一个大体框架出来,现在和网友分享一下自己的整体的一个思路和想法。欢迎大家提出宝贵建议,希望把这套API做的更好,有人真正利用起来。DEMO访问地址, 猛击这里。数据 我们看到的电子地图是多个图层叠加之后的效果,每一个图层都至少对应着一个地图服务。我们这样可以理解服务,我们把简单的参数传给后台,后台会把原始数据返回来,前端或者应用就可以根据自己需要,渲染成图。 这里返回的数据,不仅仅是矢量数据,也包括栅格数据。 矢量数据,包括那些点线面的具体坐标、投影或者坐标系。矢量... 阅读全文
posted @ 2013-11-16 09:49 HPhone 阅读(13417) 评论(9) 推荐(6) 编辑
摘要: XSS已经成为非常流行的网站攻击方式,为了安全起见,尽量避免用户的输入。可是有些情况下不仅不避免,反而要求鼓励输入,比如写博客。博客园开放性很高,可以运行手写的JS。之前比较著名的例子就是,凡是看到某一篇文章的,都自动关注他。 如果避免跨站攻击的话,我们就得对用户的输入,进行转义。例如。如果直接保存这个字符串的话,然后再输出的话,就会运行JS了。我们需要将这个字符串转义成"<script type='text/javascript'>alert('hello world')</script>&qu 阅读全文
posted @ 2013-11-09 13:17 HPhone 阅读(12814) 评论(3) 推荐(2) 编辑
摘要: 上面的一篇博客,两点距离比较粗糙,现贴一篇更加细腻的算法wgs84PointsDistance = function(fromPoint, toPoint) { if(arguments.length != 2) { return 0; } lon1 = fromPoint.x; lat1 = fromPoint.y; lon2 = toPoint.x; lat2 = toPoint.y; var a = 6378137, b = 6356752.3142, f = 1 / 298.257223563; var L = (lon2 - lon1).toRad(); var U1 = Math. 阅读全文
posted @ 2012-12-05 18:07 HPhone 阅读(5372) 评论(6) 推荐(0) 编辑
摘要: 我们常说的经纬度就是GPS坐标,采用的是WGS_84坐标系统,一般采集来的数据就是GPS数据。我们知道使用ArcGIS Server可以很容易得到相关的数据,但是有时候,很简单的一个小功能,不值得使用这么大的软件。可以直接在客户端计算出来。下面这个算法,比较粗糙,有一定的误差。 1 function getDistance(p1, p2) { 2 var r = 6378137; 3 var x1 = p1.x * Math.PI / 180; 4 var x2 = p2.x * Math.PI / 180; 5 var y1 = p1.y * Math.P... 阅读全文
posted @ 2012-12-05 09:01 HPhone 阅读(7019) 评论(1) 推荐(1) 编辑
摘要: 使用前的了解 这是上一个博客留下的最后一张图,GP的服务目录,我们通过点击Tasks下面的一个链接地址进入。这个地址,需要记住,这将是GP服务的地址,需要写在代码里面的。 帮助说明,这个是在发布服务的时候,手动输入的。也就是说,如果我们想要别人来使用我们的工具,发布服务的时候,尽量让这个帮助写的清楚一些,现在很多懒人都不愿意写。 参数列表,会列出所有的参数,参数名字是需要记住的,到时候需要写在代码里面的。 数据类型,这是GP服务的数据类型。每一个GP服务数据类型和JS数据类型进行对应。 Data TypeJavaScript TypeExampleGPStringString"MyS 阅读全文
posted @ 2012-11-18 15:31 HPhone 阅读(12149) 评论(11) 推荐(5) 编辑
摘要: 所有的数据与环境都配置好以后,我们就需要发布GP服务了。对于ArcGIS 10.1,发布GP服务方式改变了,得需要ArcMap帮助。我们可以先将这个服务打包定义,然后发给别人,使用Sever发布,也可以直接使用Server发布。 不论怎么样,都需要预先在ArcMap跑一遍。 菜单栏Geoprocessing-Results查看结果。 服务发布 为什么需要跑一遍呢?之前我们模型定制完成之后,直接发布,没有验证,可能使用GP服务,就出现问题。所以,这样一来,先跑一遍,就可以处理这些问题,然后再去发布。 1:选中结果 右键当前结果,Share As-Geoprocessing Servi... 阅读全文
posted @ 2012-11-18 01:05 HPhone 阅读(16460) 评论(0) 推荐(3) 编辑
摘要: 这里的准备分为两部分,分别是数据整理和环境设置。数据整理 上面我们使用到全国主要城市图,新建的Feature Class,中间和最后生成的等等数据,我们最好数据整理一下。 上图是我们常见的一个数据结构图。 ToolData在这里面,我们可以放置我们的底图Geodatabase和Schema Geodatabase。何为Schema,上面我们新建的Feature Class,类似一种模板。 Scripts可以放置一些python脚本文件,具体脚本文件,请看下一篇关于python集成Module Builder ,生成工具。 Doc可以放置一些说明文件。 Scratch放... 阅读全文
posted @ 2012-11-17 20:43 HPhone 阅读(6886) 评论(4) 推荐(2) 编辑
摘要: 前面打一个小广告,欢迎关注WebGIS微博 建模,是我们发布GP服务的第一步,这是基础功。我们为什么要建模呢? 对于现实的GIS业务来说,基本上都有相应的流程和规范,具体怎么做,都得按照步骤来。步骤少还好说,要是步骤多了,不仅效率低下,而且还容易出现工作错误,每一步都会产生中间文件。例如我们的天气预报,将收集各个气象站站点定位到地图上,然后剪出中国的版图来,再然后进行克里金差值等等,一些步骤以后,就可以得到相应的温度线或者降雨线。步骤都是规定好的,为什么不做成一个工具,然后直接输出结果呢? 对,这就是建模的好处,我们通过将多个工具组合起来,生成一个工具,来完成整体的步骤化。 ... 阅读全文
posted @ 2012-11-05 21:36 HPhone 阅读(7916) 评论(5) 推荐(5) 编辑