<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>安特网 &#187; google maps</title>
	<atom:link href="http://www.anttna.com/archives/tag/google-maps/feed" rel="self" type="application/rss+xml" />
	<link>http://www.anttna.com</link>
	<description>www.anttna.com</description>
	<lastBuildDate>Mon, 12 Dec 2011 02:35:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>纠偏/反纠偏接口</title>
		<link>http://www.anttna.com/archives/1006.html</link>
		<comments>http://www.anttna.com/archives/1006.html#comments</comments>
		<pubDate>Thu, 01 Sep 2011 14:15:31 +0000</pubDate>
		<dc:creator>ant</dc:creator>
				<category><![CDATA[LBS技术]]></category>
		<category><![CDATA[地图纠偏]]></category>
		<category><![CDATA[纠偏接口]]></category>
		<category><![CDATA[google maps]]></category>

		<guid isPermaLink="false">http://www.anttna.com/?p=1006</guid>
		<description><![CDATA[关于地图为什么要纠偏，之前的文章已经提到过，本文不再介绍。有兴趣的朋友可以看 完美解决Google电子地图偏移问题 和 完美解决Google电子地图偏移问题II 。 简单介绍下anttna.com提供的两个纠偏/反纠偏接口 (1) 纠偏接口 http://www.anttna.com/goffset/goffset1.php?lat=xxx&#38;lon=xxx 其中，lat为点分十进制纬度值，lon为点分十进制经度值。 返回数据格式为:纠偏后的纬度,纠偏后的经度 通过该接口，可以将GPS设备获取到的实际经纬度值准确地标记在电子地图上。 示例:实际经纬度为22.559151,113.943581 ,通过查询 http://www.anttna.com/goffset/goffset1.php?lat=22.559151&#38;lon=113.943581 可得到纠偏后的经纬度 22.556129054934,113.94844652715。 (2)反纠偏接口 http://www.anttna.com/goffset/goffset2.php?lat_offset=xxx&#38;lon_offset=xxx 其中，lat_offset为点分十进制纠偏后纬度值，lon_offset为点分十进制纠偏后的经度值 返回数据格式为:实际纬度,实际经度 通过该接口，可以将纠偏后的经纬度转换为实际经纬度。例如，将google maps 地图中通过google map api取到的经纬度值转换为实际经纬度。 示例:纠偏后经纬度为22.556129054934,113.94844652715,通过查询 http://www.anttna.com/goffset/goffset2.php?lat_offset=22.556129054934&#38;lon_offset=113.94844652715 可得到实际经纬度22.559151,113.943581]]></description>
			<content:encoded><![CDATA[<p>关于地图为什么要纠偏，之前的文章已经提到过，本文不再介绍。有兴趣的朋友可以看 <a href="http://www.anttna.com/archives/468.html" target="_self">完美解决Google电子地图偏移问题</a> 和 <a href="http://www.anttna.com/archives/641.html" target="_self">完美解决Google电子地图偏移问题II</a> 。</p>
<p>简单介绍下anttna.com提供的两个纠偏/反纠偏接口<span id="more-1006"></span></p>
<p>(1)<span style="color: #ff0000;"> 纠偏接口</span></p>
<p>http://www.anttna.com/goffset/goffset1.php?lat=xxx&amp;lon=xxx</p>
<p>其中，lat为点分十进制纬度值，lon为点分十进制经度值。</p>
<p>返回数据格式为:纠偏后的纬度,纠偏后的经度</p>
<p>通过该接口，可以将GPS设备获取到的实际经纬度值准确地标记在电子地图上。</p>
<p>示例:实际经纬度为22.559151,113.943581 ,通过查询<a href="http://www.anttna.com/goffset/goffset1.php?lat=22.559151&amp;lon=113.943581"> http://www.anttna.com/goffset/goffset1.php?lat=22.559151&amp;lon=113.943581</a> 可得到纠偏后的经纬度 22.556129054934,113.94844652715。</p>
<p>(2)<span style="color: #ff0000;">反纠偏接口</span></p>
<p>http://www.anttna.com/goffset/goffset2.php?lat_offset=xxx&amp;lon_offset=xxx</p>
<p>其中，lat_offset为点分十进制纠偏后纬度值，lon_offset为点分十进制纠偏后的经度值</p>
<p>返回数据格式为:实际纬度,实际经度</p>
<p>通过该接口，可以将纠偏后的经纬度转换为实际经纬度。例如，将google maps 地图中通过google map api取到的经纬度值转换为实际经纬度。</p>
<p>示例:纠偏后经纬度为22.556129054934,113.94844652715,通过查询 <a href="http://www.anttna.com/goffset/goffset2.php?lat_offset=22.556129054934&amp;lon_offset=113.94844652715">http://www.anttna.com/goffset/goffset2.php?lat_offset=22.556129054934&amp;lon_offset=113.94844652715</a> 可得到实际经纬度22.559151,113.943581</p>
<p><p><script type="text/javascript"><!--
google_ad_client = "pub-4525448440186199";
google_ad_slot = "0511824612";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anttna.com/archives/1006.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>google基站位置 vs 移动基站位置</title>
		<link>http://www.anttna.com/archives/695.html</link>
		<comments>http://www.anttna.com/archives/695.html#comments</comments>
		<pubDate>Mon, 14 Jun 2010 09:12:50 +0000</pubDate>
		<dc:creator>ant</dc:creator>
				<category><![CDATA[LBS技术]]></category>
		<category><![CDATA[基站定位]]></category>
		<category><![CDATA[基站数据]]></category>
		<category><![CDATA[移动基站]]></category>
		<category><![CDATA[google maps]]></category>

		<guid isPermaLink="false">http://www.anttna.com/?p=695</guid>
		<description><![CDATA[在做基站定位及相关LBS应用时，很多人认为使用google api查询得到的基站经纬度就是基站的实际位置，其实不然。基站位置数据对运营商来说都是保密的。google使用了一套自己的采集机制收集基站数据，详细内容之前已经介绍过。 google的数据和运营商自身的数据之间有什么关系呢？ ant做了张google&#8221;基站&#8221;和移动基站位置的对比图，这张图可以很清晰的反映出两者之间的关系： 注意:本文涉及的所有数据均指移动GSM基站数据。CDMA,3G不在本文讨论范围内。 点击图片查看大图 图中蓝色点是移动基站实际的位置。这个点是怎么得来的呢？hoho，很简单，目视！ 基站有3个扇区，每个扇区120度，分别指向正北，东南，西南三个方向，各扇区的cellid值不相同。 红色点是通过google查询lac,cellid得到的经纬度。google认为一个cellid就是一个基站，所以3个扇区就有3个经纬度。把三个红色点连成三角形，你会发现实际的基站位置大概就在三角形的中心附近。 从这张图上也可以看出，Google把一个基站分成了3个&#8221;基站&#8221;，&#8221;基站&#8221;的区域范围和移动的单基站比缩小了很多。所以，ant认为Google的基站数据更适合于LBS应用。]]></description>
			<content:encoded><![CDATA[<p>在做基站定位及相关LBS应用时，很多人认为使用google api查询得到的基站经纬度就是基站的实际位置，其实不然。基站位置数据对运营商来说都是保密的。google使用了一套自己的采集机制收集基站数据，详细内容之前<a title="google maps for ppc" href="http://www.anttna.com/archives/5.html" target="_blank">已经介绍过</a>。<br />
google的数据和运营商自身的数据之间有什么关系呢？<span id="more-695"></span></p>
<p>ant做了张google&#8221;基站&#8221;和移动基站位置的对比图，这张图可以很清晰的反映出两者之间的关系：<br />
注意:本文涉及的所有数据均指移动GSM基站数据。CDMA,3G不在本文讨论范围内。</p>
<p>点击图片查看大图<br />
<a href="http://www.anttna.com/wp-content/uploads/2010/06/cm_vs_google.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-696" title="cm_vs_google" src="http://www.anttna.com/wp-content/uploads/2010/06/cm_vs_google.png" alt="" width="500" height="300" /></a></p>
<p>图中蓝色点是移动基站实际的位置。这个点是怎么得来的呢？hoho，很简单，目视！<br />
基站有3个扇区，每个扇区120度，分别指向正北，东南，西南三个方向，各扇区的cellid值不相同。<br />
红色点是通过google查询lac,cellid得到的经纬度。google认为一个cellid就是一个基站，所以3个扇区就有3个经纬度。把三个红色点连成三角形，你会发现实际的基站位置大概就在三角形的中心附近。</p>
<p>从这张图上也可以看出，Google把一个基站分成了3个&#8221;基站&#8221;，&#8221;基站&#8221;的区域范围和移动的单基站比缩小了很多。所以，ant认为Google的基站数据更适合于LBS应用。<br />
<p><script type="text/javascript"><!--
google_ad_client = "pub-4525448440186199";
google_ad_slot = "0511824612";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anttna.com/archives/695.html/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>完美解决Google电子地图偏移问题II</title>
		<link>http://www.anttna.com/archives/641.html</link>
		<comments>http://www.anttna.com/archives/641.html#comments</comments>
		<pubDate>Wed, 28 Apr 2010 16:21:35 +0000</pubDate>
		<dc:creator>ant</dc:creator>
				<category><![CDATA[LBS技术]]></category>
		<category><![CDATA[偏移修正]]></category>
		<category><![CDATA[地图偏移]]></category>
		<category><![CDATA[纠偏]]></category>
		<category><![CDATA[google maps]]></category>

		<guid isPermaLink="false">http://www.anttna.com/?p=641</guid>
		<description><![CDATA[之前写了篇&#8221;完美解决Google电子地图偏移问题&#8220;，但是 google在3月31日更新了ditu.google.cn的实现，原有的方法已经不适用。ant 分析了google maps新的纠偏方法，并写出了相应的纠偏算法。今天正好有时间把思路整理一下贴出来，以免大家分析google地图偏移时走弯路。 新版谷歌地图的偏移原理 以前的谷歌地图(ditu.google.cn)，电子地图和卫星地图图片都和mas.google.com一样。用户在使用浏览器访问谷歌地图时，客户端浏览器把要显示的电子地图和卫星地图下载到本地，再调用google的偏移接口获取偏移值，用javascript进行地图纠偏。一切操作都是在客户端浏览器进行的。现在改进后的谷歌地图就不一样了，谷歌地图在服务器上预先把标准的卫星地图按照偏移量切割成新的带偏移的图片，用户在使用浏览器访问谷歌地图时，客户端浏览器直接下载偏移的地图图片，在和谷歌地图的交互过程中不传输任何偏移值。 新版谷歌地图的纠偏方法 谷歌地图的这次升级很完美，以前大家普遍采用的纠偏方法都失效了。但是，任何系统都有漏洞，关键就看怎么去挖掘。现在的切入点就是，谷歌地图升级后，同一经纬度的卫星图片 ditu.google.cn和maps.google.com不一样。 我们看看对于经纬度(22.535076,114.021229)，通过ditu.google.cn和maps.google.com访问得到zoom 14级别卫星图片的差别。关于经纬度和google maps的图片编号x，y转换关系这里就不叙述了。 用公式计算出(22.535076,114.021229)在zoom 14下的图片编号为x=13381,y=7138 获取ditu.google.cn图片: http://mt1.google.cn/vt/lyrs=s@58&#38;gl=cn&#38;x=13381&#38;y=7138&#38;z=14&#38;s=Gali 获取maps.google.com图片: http://khm1.google.com/kh/v=58&#38;x=13381&#38;y=7138&#38;z=14&#38;s=Gali 同一个点在cn地图和com地图上的位置是不一样的，两个位置坐标的差值就是偏移量! 下面就重点研究如何获取这个差值。单纯取一个像素点来算会有很大误差，而且图片中的一个正确点经过偏移后，很可能已经“跑”出这张256&#215;256图片的范围。ant对以前通过接口获取的偏移值统计分析发现，zoom 18级别地图的X方向的偏移&#60;2000,Y方向&#60;1000，也就是16&#215;8 张图片的范围。 为了计算方便和提高精度，我们用zoom 14下整张图片(256&#215;256)做对比的方法来计算偏移，因为zoom 14和zoom 18大小相差16倍，通过计算可知，zoom 14下的偏移范围是X&#60;125,Y&#60;63。所以在zoom 14级别下可以保证一张标准卫星图片经过偏移后不会“跑”出以该图片为中心的9张 (3&#215;3)图片范围。 (1)首先读取ditu.google.cn下(22.535076,114.021229)经过偏移后的卫星地图(图片a) ，x=13381,y=7138 (2)读取maps.google.com下以坐标点(13381,7138)为中心的9张图片，分别是 (13380,7137),(13381,7137),(13382,7137), (13380,7138),(13381,7138),(13382,7138), (13380,7139),(13381,7139),(13382,7139) 合并成一张图片(图片b) (3)剩下的事就是找出有偏移的图片a在图b中的位置(x1,y1),标准图片13381-7138在图b中的实际位置是(256,256),所以偏移值就是X=x1-256,Y=y1-256 纠偏算法验证 ant用vc写了个example来验证算法的正确性，感谢虫牙童鞋在算法上的帮助。给定经纬度后，程序计算该经纬度对应的zoom 18级的偏移值。 (22.535076,114.021229)实际偏移值是:938,568，测试程序计算出的结果是942,566。偏差x方向4个像素，y方向2个像素。 ant又找了10个不同的点，这些点都保存了以前通过google接口查询的标准值，用来验证算法的正确性。 经度 纬度 标准值 计算值 误差(像素) 上海市 121.345001 31.261600 852,411 855,412 x:3,y:1 上海市 121.454002 [...]]]></description>
			<content:encoded><![CDATA[<p>之前写了篇&#8221;<a href="http://www.anttna.com/archives/468.html">完美解决Google电子地图偏移问题</a>&#8220;，但是 google在3月31日更新了ditu.google.cn的实现，原有的方法已经不适用。ant 分析了google maps新的纠偏方法，并写出了相应的纠偏算法。今天正好有时间把思路整理一下贴出来，以免大家分析google地图偏移时走弯路。<span id="more-641"></span></p>
<p><strong>新版谷歌地图的偏移原理</strong><br />
以前的谷歌地图(ditu.google.cn)，电子地图和卫星地图图片都和mas.google.com一样。用户在使用浏览器访问谷歌地图时，客户端浏览器把要显示的电子地图和卫星地图下载到本地，再调用google的偏移接口获取偏移值，用javascript进行地图纠偏。一切操作都是在客户端浏览器进行的。现在改进后的谷歌地图就不一样了，谷歌地图在服务器上预先把标准的卫星地图按照偏移量切割成新的带偏移的图片，用户在使用浏览器访问谷歌地图时，客户端浏览器直接下载偏移的地图图片，在和谷歌地图的交互过程中不传输任何偏移值。</p>
<p><strong>新版谷歌地图的纠偏方法</strong><br />
谷歌地图的这次升级很完美，以前大家普遍采用的纠偏方法都失效了。但是，任何系统都有漏洞，关键就看怎么去挖掘。现在的切入点就是，谷歌地图升级后，同一经纬度的卫星图片 ditu.google.cn和maps.google.com不一样。<br />
我们看看对于经纬度(22.535076,114.021229)，通过ditu.google.cn和maps.google.com访问得到zoom 14级别卫星图片的差别。关于经纬度和google maps的图片编号x，y转换关系这里就不叙述了。<br />
用公式计算出(22.535076,114.021229)在zoom 14下的图片编号为x=13381,y=7138<br />
获取ditu.google.cn图片:<br />
<a href="http://mt1.google.cn/vt/lyrs=s@58&amp;gl=cn&amp;x=13381&amp;y=7138&amp;z=14&amp;s=Gali">http://mt1.google.cn/vt/lyrs=s@58&amp;gl=cn&amp;x=13381&amp;y=7138&amp;z=14&amp;s=Gali</a><br />
获取maps.google.com图片:<br />
<a href="http://khm1.google.com/kh/v=58&amp;x=13381&amp;y=7138&amp;z=14&amp;s=Gali">http://khm1.google.com/kh/v=58&amp;x=13381&amp;y=7138&amp;z=14&amp;s=Gali</a><br />
<a href="http://www.anttna.com/wp-content/uploads/2010/04/cn-com.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-655" title="cn-com" src="http://www.anttna.com/wp-content/uploads/2010/04/cn-com.jpg" alt="" width="532" height="298" /></a></p>
<p>同一个点在cn地图和com地图上的位置是不一样的，两个位置坐标的差值就是偏移量!</p>
<p>下面就重点研究如何获取这个差值。单纯取一个像素点来算会有很大误差，而且图片中的一个正确点经过偏移后，很可能已经“跑”出这张256&#215;256图片的范围。ant对以前通过接口获取的偏移值统计分析发现，zoom 18级别地图的X方向的偏移&lt;2000,Y方向&lt;1000，也就是16&#215;8 张图片的范围。<br />
为了计算方便和提高精度，我们用zoom 14下整张图片(256&#215;256)做对比的方法来计算偏移，因为zoom 14和zoom 18大小相差16倍，通过计算可知，zoom 14下的偏移范围是X&lt;125,Y&lt;63。所以在zoom 14级别下可以保证一张标准卫星图片经过偏移后不会“跑”出以该图片为中心的9张 (3&#215;3)图片范围。<br />
(1)首先读取ditu.google.cn下(22.535076,114.021229)经过偏移后的卫星地图(图片a) ，x=13381,y=7138<br />
<a href="http://www.anttna.com/wp-content/uploads/2010/04/maps-from-cn.jpeg" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-653" title="maps-from-cn" src="http://www.anttna.com/wp-content/uploads/2010/04/maps-from-cn.jpeg" alt="" width="256" height="256" /></a></p>
<p>(2)读取maps.google.com下以坐标点(13381,7138)为中心的9张图片，分别是<br />
(13380,7137),(13381,7137),(13382,7137),<br />
(13380,7138),(13381,7138),(13382,7138),<br />
(13380,7139),(13381,7139),(13382,7139)<br />
<a href="http://www.anttna.com/wp-content/uploads/2010/04/9pic.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-656" title="9pic" src="http://www.anttna.com/wp-content/uploads/2010/04/9pic.jpg" alt="" width="384" height="378" /></a><br />
合并成一张图片(图片b)<br />
<a href="http://www.anttna.com/wp-content/uploads/2010/04/bigpic.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-657" title="bigpic" src="http://www.anttna.com/wp-content/uploads/2010/04/bigpic.jpg" alt="" width="512" height="512" /></a></p>
<p>(3)剩下的事就是找出有偏移的图片a在图b中的位置(x1,y1),标准图片13381-7138在图b中的实际位置是(256,256),所以偏移值就是X=x1-256,Y=y1-256<br />
<a href="http://www.anttna.com/wp-content/uploads/2010/04/findoffset21.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-671" title="findoffset2" src="http://www.anttna.com/wp-content/uploads/2010/04/findoffset21.jpg" alt="" width="512" height="510" /></a></p>
<p><strong>纠偏算法验证</strong><br />
ant用vc写了个example来验证算法的正确性，感谢虫牙童鞋在算法上的帮助。给定经纬度后，程序计算该经纬度对应的zoom 18级的偏移值。<br />
<a href="http://www.anttna.com/wp-content/uploads/2010/04/vc-offset.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-659" title="vc-offset" src="http://www.anttna.com/wp-content/uploads/2010/04/vc-offset.jpg" alt="" width="481" height="321" /></a></p>
<p>(22.535076,114.021229)实际偏移值是:938,568，测试程序计算出的结果是942,566。偏差x方向4个像素，y方向2个像素。</p>
<p>ant又找了10个不同的点，这些点都保存了以前通过google接口查询的标准值，用来验证算法的正确性。</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="95" valign="top"></td>
<td width="95" valign="top">经度</td>
<td width="95" valign="top">纬度</td>
<td width="95" valign="top">标准值</td>
<td width="95" valign="top">计算值</td>
<td width="95" valign="top">误差(像素)</td>
</tr>
<tr>
<td width="95" valign="top">上海市</td>
<td width="95" valign="top">121.345001</td>
<td width="95" valign="top">31.261600</td>
<td width="95" valign="top">852,411</td>
<td width="95" valign="top">855,412</td>
<td width="95" valign="top">x:3,y:1</td>
</tr>
<tr>
<td width="95" valign="top">上海市</td>
<td width="95" valign="top">121.454002</td>
<td width="95" valign="top">31.227900</td>
<td width="95" valign="top">855,410</td>
<td width="95" valign="top">855,414</td>
<td width="95" valign="top">x:0,y:4</td>
</tr>
<tr>
<td width="95" valign="top">深圳市</td>
<td width="95" valign="top">114.038223</td>
<td width="95" valign="top">22.519770</td>
<td width="95" valign="top">945,559</td>
<td width="95" valign="top">949,557</td>
<td width="95" valign="top">x:4,y:2</td>
</tr>
<tr>
<td width="95" valign="top">深圳市</td>
<td width="95" valign="top">113.893997</td>
<td width="95" valign="top">22.796499</td>
<td width="95" valign="top">912,604</td>
<td width="95" valign="top">912,606</td>
<td width="95" valign="top">x:0,y:2</td>
</tr>
<tr>
<td width="95" valign="top">北京市</td>
<td width="95" valign="top">116.525002</td>
<td width="95" valign="top">39.968300</td>
<td width="95" valign="top">1107,-284</td>
<td width="95" valign="top">1105,-280</td>
<td width="95" valign="top">x:2,y:4</td>
</tr>
<tr>
<td width="95" valign="top">北京市</td>
<td width="95" valign="top">115.952324</td>
<td width="95" valign="top">39.732647</td>
<td width="95" valign="top">1109,-255</td>
<td width="95" valign="top">1112,-257</td>
<td width="95" valign="top">x:3,y:2</td>
</tr>
<tr>
<td width="95" valign="top">重庆市</td>
<td width="95" valign="top">106.530998</td>
<td width="95" valign="top">29.456900</td>
<td width="95" valign="top">703,605</td>
<td width="95" valign="top">702,609</td>
<td width="95" valign="top">x:1,y:4</td>
</tr>
<tr>
<td width="95" valign="top">重庆市</td>
<td width="95" valign="top">106.496002</td>
<td width="95" valign="top">29.539000</td>
<td width="95" valign="top">723,576</td>
<td width="95" valign="top">722,580</td>
<td width="95" valign="top">x:1,y:4</td>
</tr>
<tr>
<td width="95" valign="top">西安市</td>
<td width="95" valign="top">108.931976</td>
<td width="95" valign="top">34.271782</td>
<td width="95" valign="top">862,360</td>
<td width="95" valign="top">865,360</td>
<td width="95" valign="top">x:3,y:0</td>
</tr>
<tr>
<td width="95" valign="top">西安市</td>
<td width="95" valign="top">109.001999</td>
<td width="95" valign="top">34.278198</td>
<td width="95" valign="top">907,322</td>
<td width="95" valign="top">913,321</td>
<td width="95" valign="top">x:6,y:1</td>
</tr>
</tbody>
</table>
<p>从结果看，偏移值误差大部分在4个像素内，也就是说在google maps卫星地图最高的清晰度级别(zoom 18)时，算法的误差大概是1～2米。</p>
<p><strong>如何快速获取谷歌电子地图的偏移<br />
</strong></p>
<p>上面提到的方法挺复杂，其实<span style="color: #ff0000;">最简单的方法就是使用anttna.com的偏移接口: <a href="http://www.anttna.com/goffset/goffset1.php?lat=xxx&amp;lon=xxx">http://www.anttna.com/goffset/goffset1.php?lat=xxx&amp;lon=xxx<br />
</a></span></p>
<p>虽然google接口关闭了，但是ant的goffset接口仍然有效。<br />
goffset的具体使用方法见ant的上一篇blog <a href="http://www.anttna.com/archives/468.html">完美解决Google电子地图偏移问题</a> 。<br />
<p><script type="text/javascript"><!--
google_ad_client = "pub-4525448440186199";
google_ad_slot = "0511824612";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anttna.com/archives/641.html/feed</wfw:commentRss>
		<slash:comments>65</slash:comments>
		</item>
		<item>
		<title>完美解决Google电子地图偏移问题</title>
		<link>http://www.anttna.com/archives/468.html</link>
		<comments>http://www.anttna.com/archives/468.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 00:45:22 +0000</pubDate>
		<dc:creator>ant</dc:creator>
				<category><![CDATA[LBS技术]]></category>
		<category><![CDATA[偏移修正]]></category>
		<category><![CDATA[地图偏移]]></category>
		<category><![CDATA[电子地图]]></category>
		<category><![CDATA[google maps]]></category>

		<guid isPermaLink="false">http://www.anttna.com/?p=468</guid>
		<description><![CDATA[受中国的一些政策法规的限制，Google电子地图必需加上偏移。其实，不光是google地图，国内所有做地图的公司的产品都是要加上偏移的。各公司在自己的客户端上再加上修正算法，从而保证使用他们的产品不会产生偏移。 注意:2010/03/31 因Google更换了API，本文所提的方法已经失效。 请使用本站的偏移修正接口： http://www.anttna.com/goffset/goffset1.php?lat=纠偏前的纬度值&#38;lon=纠偏前的经度值 Google电子地图偏移的原理 google 地图在显示指定经纬度(lat,lon)的坐标点(x,y)点时，根据偏移函数算出该点的偏移值(a,b)，把该点的坐标减去偏移值后的结果(x-a,y-b)显示在电子地图上。 Google电子地图偏移的修正方法 知道了原理后，修正的方法就很简单了：用同样的方法获取该点的偏移值(a,b)，预先给定位点加上这个偏移值，把结果(x+a,y+b)提交给google map,google map再经过上面的算法处理后(x+a-a,y+b-b)，显示在地图上的就是(x,y)了。 如何得到该点的偏移值(a,b)? 网上已经有人研究出了google获取偏移值的方法，接口地址为 http://ditu.google.cn/maps/vp?spn=0.0,0.0&#38;z=18&#38;vp=xxxx,xxxx ，只要提交同样的经纬度到该接口，返回的结果里就包含了该经纬度的偏移值。 为了简化操作，ant封装了该接口，可以提交经纬度到接口 http://www.anttna.com/goffset/goffset.php?lat=xxx&#38;lon=xxx 直接获得偏移值。返回格式为: zoom,offset_x,offset_y zoom: 这个值在做坐标运算时需要用到。 offset_x: 指定经纬度X方向的偏移值 offset_y:指定经纬度Y方向的偏移值 有了这三个值就可以在google map里修正坐标了 function convertCoord(vertex,zoom,offsetX,offsetY) { var projection = gMap.getCurrentMapType().getProjection(); var point = projection.fromLatLngToPixel(vertex, zoom); point = new GPoint(point.x + offsetX, point.y + offsetY); vertex = projection.fromPixelToLatLng(point, zoom); return vertex; } [...]]]></description>
			<content:encoded><![CDATA[<p>受中国的一些政策法规的限制，Google电子地图必需加上偏移。其实，不光是google地图，国内所有做地图的公司的产品都是要加上偏移的。各公司在自己的客户端上再加上修正算法，从而保证使用他们的产品不会产生偏移。<span id="more-468"></span></p>
<h2><span style="color: #ff0000;">注意:2010/03/31 因Google更换了API，本文所提的方法已经失效。</span></h2>
<p><span style="color: #ff0000;">请使用本站的偏移修正接口： http://www.anttna.com/goffset/goffset1.php?lat=纠偏前的纬度值&amp;lon=纠偏前的经度值</span></p>
<p><strong>Google电子地图偏移的原理</strong></p>
<p><strong> </strong>google 地图在显示指定经纬度(lat,lon)的坐标点(x,y)点时，根据偏移函数算出该点的偏移值(a,b)，把该点的坐标减去偏移值后的结果(x-a,y-b)显示在电子地图上。</p>
<p><strong>Google电子地图偏移的修正方法</strong></p>
<p><strong></strong>知道了原理后，修正的方法就很简单了：用同样的方法获取该点的偏移值(a,b)，预先给定位点加上这个偏移值，把结果(x+a,y+b)提交给google map,google map再经过上面的算法处理后(x+a-a,y+b-b)，显示在地图上的就是(x,y)了。</p>
<p><strong>如何得到该点的偏移值(a,b)?</strong></p>
<p><strong></strong>网上已经有人研究出了google获取偏移值的方法，接口地址为 http://ditu.google.cn/maps/vp?spn=0.0,0.0&amp;z=18&amp;vp=xxxx,xxxx ，只要提交同样的经纬度到该接口，返回的结果里就包含了该经纬度的偏移值。</p>
<p>为了简化操作，ant封装了该接口，可以提交经纬度到接口 http://www.anttna.com/goffset/goffset.php?lat=xxx&amp;lon=xxx 直接获得偏移值。返回格式为: zoom,offset_x,offset_y</p>
<p>zoom: 这个值在做坐标运算时需要用到。</p>
<p>offset_x: 指定经纬度X方向的偏移值</p>
<p>offset_y:指定经纬度Y方向的偏移值</p>
<p>有了这三个值就可以在google map里修正坐标了</p>
<pre class="brush: jscript; title: ;">
function convertCoord(vertex,zoom,offsetX,offsetY)
 {
 var projection = gMap.getCurrentMapType().getProjection();
var point = projection.fromLatLngToPixel(vertex, zoom);
 point = new GPoint(point.x + offsetX, point.y + offsetY);
 vertex = projection.fromPixelToLatLng(point, zoom);
 return vertex;
 }
var point = new GLatLng(lat,lng);//原经纬度点
//通过接口http://www.anttna.com/goffset/goffset.php?lat=xxx&amp;lon=xxx获得的数据
var zoom=18;
var offset_x=100;
var offset_y=200;
//修正经纬度
point=convertCoord(point,zoom,offset_x,offset_y);
//
</pre>
<p>效果测试</p>
<p>之前和zhjtan讨论过<a href="http://www.anttna.com/guestbook/comment-page-2#comment-362" target="_blank">关于google map的偏移问题</a>，这里仍然用该经纬度(22.535076,114.021229)做测试。</p>
<p>未修正的地图（电子地图和卫星地图不一致）</p>
<p><a href="http://www.anttna.com/wp-content/uploads/2010/01/gmapoffset1.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-478" title="gmapoffset1" src="http://www.anttna.com/wp-content/uploads/2010/01/gmapoffset1.png" alt="" width="500" height="300" /></a></p>
<p><a href="http://www.anttna.com/wp-content/uploads/2010/01/gmapoffset2.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-479" title="gmapoffset2" src="http://www.anttna.com/wp-content/uploads/2010/01/gmapoffset2.png" alt="" width="500" height="300" /></a></p>
<p>下面是修正后的地图（电子地图和卫星地图一致）</p>
<p><a href="http://www.anttna.com/wp-content/uploads/2010/01/gmapoffset3.png" class="highslide-image" onclick="return hs.expand(this);"><img class="alignnone size-full wp-image-480" title="gmapoffset3" src="http://www.anttna.com/wp-content/uploads/2010/01/gmapoffset3.png" alt="" width="500" height="300" /></a></p>
<p>从测试效果来看，使用该修正方法可以完美的解决google地图偏移的问题。</p>
<p><p><script type="text/javascript"><!--
google_ad_client = "pub-4525448440186199";
google_ad_slot = "0511824612";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anttna.com/archives/468.html/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>google maps for ppc</title>
		<link>http://www.anttna.com/archives/5.html</link>
		<comments>http://www.anttna.com/archives/5.html#comments</comments>
		<pubDate>Mon, 18 Aug 2008 17:56:51 +0000</pubDate>
		<dc:creator>ant</dc:creator>
				<category><![CDATA[网络相关]]></category>
		<category><![CDATA[基站定位]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[手机定位]]></category>

		<guid isPermaLink="false">http://t2.wangwd.com/?p=5</guid>
		<description><![CDATA[网上下了ppc版的繁体google maps，里面有“我的位置”这个功能，试用了一下，竟然可以显示我当前的位置（200m误差之内），真的很奇怪，我的手机没有gps设备，google是怎么定位我的呢？ 电子地图 卫星地图 怀着极大的好奇心，对google maps的数据进行了简单的分析。为了减少GSM，GPRS网络对分析的影响，打开了手机的飞行模式。重设google maps的数据，接上usb通过active sync上网。打开wireshark抓包。。 打开飞行模式 wireshark抓到的数据包 64.233.167.147是google的服务器，google maps在打开的时候和/glm/mmap做了几次数据的交互，分析之前先baidu,google一下“/glm/mmap”，免得做无用功 http://bbs.godeyes.cn/Announce/Announce.asp?BoardID=100&#38;ID=274997 帖子里提到了google maps会把基站id作为参数提交给google服务器，通过基站id得出当前所在的经纬度。 我手机当前获得的基站id是myl:x:x:16647:42553，转换成16进制 16647-&#62;0&#215;4107 , 42553-&#62;0xA639 在post到/glm/mmap的数据里找找，果然有41 07 和 a6 39 .. 的字样 推断： 1.google最初并没有基站位置信息（中国移动不可能提供）， 2.通过全球数以万计使用google maps GPS定位功能的用户搜集到大部分国家的GSM基站id和GPS经纬度，构建成一个庞大的对应数据库，实时更新。 3.有了google的数据库，在没有gps功能的手机设备上也可以根据基站信息精确的定位手机使用者。]]></description>
			<content:encoded><![CDATA[<p>网上下了ppc版的繁体google maps，里面有“我的位置”这个功能，试用了一下，竟然可以显示我当前的位置（200m误差之内），真的很奇怪，我的手机没有gps设备，google是怎么定位我的呢？</p>
<p><span id="more-5"></span></p>
<p>电子地图<br />
<img src="http://www.anttna.com/blog/up/1219052785.jpg" alt="" /></p>
<p>卫星地图<br />
<img src="http://www.anttna.com/blog/up/1219052902.jpg" alt="" /></p>
<p>怀着极大的好奇心，对google maps的数据进行了简单的分析。为了减少GSM，GPRS网络对分析的影响，打开了手机的飞行模式。重设google maps的数据，接上usb通过active sync上网。打开wireshark抓包。。</p>
<p>打开飞行模式<span style="color: #000000;"><span id="codest"><br />
<img src="http://www.anttna.com/blog/up/1219053725.jpg" alt="" /><br />
</span></span><br />
wireshark抓到的数据包<br />
<img src="http://www.anttna.com/blog/up/1219053289.jpg" alt="" /></p>
<p>64.233.167.147是google的服务器，google maps在打开的时候和/glm/mmap做了几次数据的交互，分析之前先baidu,google一下“/glm/mmap”，免得做无用功</p>
<p>http://bbs.godeyes.cn/Announce/Announce.asp?BoardID=100&amp;ID=274997 帖子里提到了google maps会把基站id作为参数提交给google服务器，通过基站id得出当前所在的经纬度。<br />
我手机当前获得的基站id是myl:x:x:16647:42553，转换成16进制<br />
16647-&gt;0&#215;4107 , 42553-&gt;0xA639<br />
在post到/glm/mmap的数据里找找，果然有41 07 和 a6 39 .. 的字样<br />
<img src="http://www.anttna.com/blog/up/1219071161.jpg" alt="" /></p>
<p>推断：<br />
1.google最初并没有基站位置信息（中国移动不可能提供），<br />
2.通过全球数以万计使用google maps GPS定位功能的用户搜集到大部分国家的GSM基站id和GPS经纬度，构建成一个庞大的对应数据库，实时更新。<br />
3.有了google的数据库，在没有gps功能的手机设备上也可以根据基站信息精确的定位手机使用者。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anttna.com/archives/5.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

