google地图实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
揭密Google Map的工作原理 日期:2007-06-20 10:16:46 作者:未知 来源:3S新闻周刊 评论条 ? 我分析了google map的工作原理,特别是如何进行tiles编码。Google map使用预着色tiles,可以通过一个简单的url地址实现。这篇文章将解释如何从地理坐标(经纬度)建立tile的url地址。?? Map tile编码   Google map使用两种算法对tile的位置进行编码。   对于Google map,tile的url地址类似于:/mt?n=404v=w2.12x=130y=93zoom=9使用x和y来设置tile坐标和放大因子。放大因子从17(完全缩小)到0(最大比例)。当放大因子为17时,整个地球在一个tile中显示,此时x=0 ,y=0;放大因子为16时,地球被分为2x2部分,这时0=x=1 且0=y=1。每放大一次,每个tile被分为4个部分。因此,当放大因子为z时,显示的水平和垂直tile个数为2^(17-z)。 算法:寻找经纬度和放大因子 //correct the latitude to go from 0 (north) to 180 (south), // instead of 90(north) to -90(south) latitude=90-latitude; //correct the longitude to go from 0 to 360 longitude=180+longitude; //find tile size from zoom level double latTileSize=180/(pow(2,(17-zoom))); double longTileSize=360/(pow(2,(17-zoom))); //find the tile coordinates int tilex=(int)(longitude/longTileSize); int tiley=(int)(latitude/latTileSize);   事实上,这个算法只是理论上的,覆盖的地带还无法和整个地球匹配。   服务器:   Google使用4台服务器维持加载。分别是mt0, mt1, mt2 and mt3。   显示位置:   每个tile为256x256 的.png格式的图像。   对于卫星影像,编码方式有点不同   Tile的url地址类似于/kh?n=404v=8t=trtqtt,其中参数t对影像的位置进行编码。参数的长度表示缩放级别。   t=t时,可观察整个地球,只有一个tile表示地球。下一个放大级别是,该tile被分为4个象限,从左上顺时针开始分别是q r s 和 t。在你观察的影像那个象限后添加字母,就可以看见下一级象限。比如,t=tq时,给出t 影像的左上象限。依次类推,可以表示每个缩放级别… 算法:寻找经纬度和放大因子 ?Collapse //initialise the variables; double xmin=-180; double xmax=180; double ymin=-90; double ymax=90; double xmid=0; double ymid=0; string location=t; //google use a latitude divided by 2; double halflat = latitude / 2; for (int i = 0; i zoom; i++) ? { ? xmoy = (xmax + xmin) / 2; ? ymoy = (ymax + ymin) / 2; ? if (halflat ymoy) //upper part (q or r) ? { ? ymin = ymoy; ? if (longitude xmoy) ? { /*q*/ ? location+= q; ? xmax = xmoy; ? } ? else ? {/*r*/ ? location+= r; ? xmin = xmoy; ? } ? } ? else //lower part (t or s) ? { ? ymax = ymoy; ? if (longitude xmoy) ? { /*t*/ ? location+= t; ? xmax = xmoy; ? } ? else ? {/*s*/ ? location+= s; ? xmin = xmoy; ? } ? } ? } //here, the location should contains the string corresponding to

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档