由经纬度计算Google卫星地图的URL

Google卫星地图是由256x256大小的jpeg图片拼接而成,每块图片的URL格式为“http://kh.google.com/kh?v=2&t=trstrqqstsrqttsttq”样。参数v与图片关系不大,主要是参数t起作用,它是“qrst4个字符排列而成的字符串。为获取某经纬度的URL,就需要把经纬度转化为“qrst”字符串。

Google卫星地图zoom=1时,全球就为一个256x256的图片,它的中心经纬度为(0,0)URL为“http://kh.google.com/kh?v=2&t=t”。zoom=2时裂化为4块,每块的编号为:左上”t=tq”,右上”t=tr”,右下“t=ts”,左下”t=tt”。依此类推,每放大一倍,每一小块都裂分为四,从左上到右下顺时针按qrst编号,裂分后的编码为裂分前的编号上小块的编号。

由以上分析可知,在知道了某地的经纬度之后,可以由最开始的全球地图不断细分,最后得到所需的URL

 

具体可以看以下的delphi例子:

 

//zoom 放大倍数,由1-18; X 经度; Y 纬度

function getSatURL(zoom: integer; X, Y: double): string;

var

  wx, wy, cx, cy: double;

  tid: string;

  i: integer;

begin

  cx := 0;

  cy := 0;

 

  wx := 180;

  wy := 180;

 

  tid := 't';

 

  for i := 1 to zoom-1 do

  begin

    if (x >= cx) and (y >= cy) then

    begin

      tid := tid + 'r';

      cx := cx + wx / 2;

      cy := cy + wy / 2;

    end

    else if (x >= cx) and (y < cy) then

    begin

      tid := tid + 's';

      cx := cx + wx / 2;

      cy := cy - wy / 2;

    end

    else if (x < cx) and (y < cy) then

    begin

      tid := tid + 't';

      cx := cx - wx / 2;

      cy := cy - wy / 2;

    end

    else

    begin

      tid := tid + 'q';

      cx := cx - wx / 2;

      cy := cy + wy / 2;

    end;

    wx := wx / 2;

    wy := wy / 2;

  end;

  result := 'http://kh.google.com/kh?v=2&t=' + tid;

end;

 

研究这个对应关系主要是为了可以在自已程序中直接读取想要的卫星地图。当然这样应用并没有Google 的授权,可能不合法。

 

现在我正把它应用到了一个手机的J2ME的程序中,功能是让带有定位功能的手机用户能够通过互联网(GPRSCDMA 1X或将来的3G)显示所在地的卫星地图。程序进行了大半,主要界面如下图:

java phone

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值