﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-于吉吉的技术博客-随笔分类-Google Map开发</title><link>http://www.blogjava.net/dongbule/category/48782.html</link><description>建造高性能门户网</description><language>zh-cn</language><lastBuildDate>Tue, 09 Aug 2011 11:50:03 GMT</lastBuildDate><pubDate>Tue, 09 Aug 2011 11:50:03 GMT</pubDate><ttl>60</ttl><item><title>房产地图google map的初步应用点滴.4)</title><link>http://www.blogjava.net/dongbule/archive/2011/06/02/351597.html</link><dc:creator>陈于喆</dc:creator><author>陈于喆</author><pubDate>Thu, 02 Jun 2011 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/dongbule/archive/2011/06/02/351597.html</guid><wfw:comment>http://www.blogjava.net/dongbule/comments/351597.html</wfw:comment><comments>http://www.blogjava.net/dongbule/archive/2011/06/02/351597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dongbule/comments/commentRss/351597.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dongbule/services/trackbacks/351597.html</trackback:ping><description><![CDATA[<div><a id="Editor_Results_rprSelectionList_ctl09_LinkTitle" href="../archive/2011/02/12/344141.html">房产地图google map的初步应用点滴.1)</a> </div><div><a id="Editor_Results_rprSelectionList_ctl07_LinkTitle" href="../archive/2011/03/05/345786.html">房产地图google map的初步应用点滴.2)</a></div><div><a id="Editor_Results_rprSelectionList_ctl05_LinkTitle" href="../archive/2011/03/30/347304.html">房产地图google map的初步应用点滴.3)</a></div><div><a id="Editor_Results_rprSelectionList_ctl01_LinkTitle" href="../archive/2011/06/02/351597.html">房产地图google map的初步应用点滴.4)</a></div><br /><div><strong>google map测距的实现和分析</strong><br /><br />不断有传闻google map在今年的7月1号之后在大陆停止运营，具体原因是因为天朝的牌照问题，这个就不多讲了，可以发现现在搜房网的地图，和安居客等的地图纷纷都撤下 google map，而重新选择了mapabc或baidu，当然网易房产地图也不例外，现在也在使用mapabc作为网易房产地图的开发，预计将在6月底前上线，到 时再跟大家分享一下mapabc的一些开发实践。<br /><br />还是说回google map的开发，自从上次建了个qq群就有不少人在问测距怎么实现，当然很多人想的是拿来主义的，当时是拿http://xf.house.163.com /gz/map/000B.html的例子出来，但确实页面上进行了封装也写得比较乱，所以还是比较难以抽离，先给个简单实现的例子：</div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;html</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">meta&nbsp;</span><span style="color: #FF0000; ">http-equiv</span><span style="color: #0000FF; ">="content-type"</span><span style="color: #FF0000; ">&nbsp;content</span><span style="color: #0000FF; ">="text/html;&nbsp;charset=GBK"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">163网易房产</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #FF0000; ">&nbsp;src</span><span style="color: #0000FF; ">="http://maps.google.com/maps/api/js?sensor=false"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">&gt;</span><span style="background-color: #F5F5F5; color: #000000; "><br />&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;map;<br />&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;initialize()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;myLatlng&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">new</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;google.maps.LatLng(</span><span style="background-color: #F5F5F5; color: #000000; ">23.116193</span><span style="background-color: #F5F5F5; color: #000000; ">,</span><span style="background-color: #F5F5F5; color: #000000; ">113.374525</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;myOptions&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zoom:&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">15</span><span style="background-color: #F5F5F5; color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;center:&nbsp;myLatlng,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapTypeId:&nbsp;google.maps.MapTypeId.ROADMAP<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;map&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">new</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;google.maps.Map(document.getElementById(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">map_canvas</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">),&nbsp;myOptions);<br />&nbsp;&nbsp;}<br /></span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;polyline;<br /></span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;polylinesArray&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[];<br /></span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">距离标记数组</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;lenArray&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[];&nbsp;<br /></span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;rule&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">null</span><span style="background-color: #F5F5F5; color: #000000; ">;&nbsp;<br />&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">距离</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;getDistance(){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">启动整个地图的click侦听</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rule&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;google.maps.event.addListener(map,</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">click</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">(event){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addMarker(event.latLng);<br />&nbsp;&nbsp;&nbsp;&nbsp;});<br />}<br /></span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">添加新标记</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;addMarker(location){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">标记选项</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;myOptions&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position&nbsp;:&nbsp;location,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;draggable&nbsp;:</span><span style="background-color: #F5F5F5; color: #0000FF; ">false</span><span style="background-color: #F5F5F5; color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map&nbsp;:&nbsp;map,<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;marker&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">new</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;google.maps.Marker(myOptions);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">将标记压入数组</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;lenArray.push(marker);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">计算距离&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;drawOverlay();<br />}<br /></span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">画出路径覆盖层</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;drawOverlay(){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">路线数组</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;flightPlanCoordinates&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">将坐标压入路线数组</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">if</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(lenArray)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">for</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(i&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">in</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;lenArray)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flightPlanCoordinates.push(lenArray[i].getPosition());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">路径选项</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;polylineOptions&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;:&nbsp;flightPlanCoordinates,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map&nbsp;:&nbsp;map,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strokeColor&nbsp;:&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">#FF0000</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strokeOpacity&nbsp;:&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">1.0</span><span style="background-color: #F5F5F5; color: #000000; ">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strokeWeight&nbsp;:&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">2</span><span style="background-color: #F5F5F5; color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;polyline&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">new</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;google.maps.Polyline(polylineOptions);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #008000; ">//</span><span style="background-color: #F5F5F5; color: #008000; ">清除原有折线路径</span><span style="background-color: #F5F5F5; color: #008000; "><br /></span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">if</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(polylinesArray)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">for</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(i&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">in</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;polylinesArray)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;polylinesArray[i].setMap(</span><span style="background-color: #F5F5F5; color: #0000FF; ">null</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;polylinesArray&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;polyline.setMap(map);<br />&nbsp;&nbsp;&nbsp;&nbsp;polylinesArray.push(polyline);<br />&nbsp;&nbsp;&nbsp;&nbsp;alert((polyline.getLength()</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">1000</span><span style="background-color: #F5F5F5; color: #000000; ">).toFixed(</span><span style="background-color: #F5F5F5; color: #000000; ">3</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">+</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">km</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />}<br />google.maps.LatLng.prototype.distanceFrom&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">(latlng)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;lat&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #F5F5F5; color: #000000; ">.lat(),&nbsp;latlng.lat()]<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;lng&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #F5F5F5; color: #000000; ">.lng(),&nbsp;latlng.lng()]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;R&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">6378137</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;dLat&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(lat[</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">]&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">-</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;lat[</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">])&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.PI&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">180</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;dLng&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(lng[</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">]&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">-</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;lng[</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">])&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.PI&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">180</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;a&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.sin(dLat&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">2</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.sin(dLat&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">2</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">+</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.cos(lat[</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">]&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.PI&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">180</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.cos(lat[</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">]&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.PI&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">180</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.sin(dLng&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">2</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.sin(dLng&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">2</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;c&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">2</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.atan2(Math.sqrt(a),&nbsp;Math.sqrt(</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">-</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;a));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;d&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;R&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">*</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">return</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;Math.round(d);<br />}&nbsp;<br />google.maps.Marker.prototype.distanceFrom&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">(marker)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">return</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #F5F5F5; color: #000000; ">.getPosition().distanceFrom(marker.getPosition());<br />}<br />google.maps.Polyline.prototype.getLength&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">function</span><span style="background-color: #F5F5F5; color: #000000; ">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;d&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;path&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">this</span><span style="background-color: #F5F5F5; color: #000000; ">.getPath();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;latlng;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">for</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;i&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">;&nbsp;i&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">&lt;</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;path.getLength()&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">-</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">;&nbsp;i</span><span style="background-color: #F5F5F5; color: #000000; ">++</span><span style="background-color: #F5F5F5; color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;latlng&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;[path.getAt(i),&nbsp;path.getAt(i&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">+</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">)];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">+=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;latlng[</span><span style="background-color: #F5F5F5; color: #000000; ">0</span><span style="background-color: #F5F5F5; color: #000000; ">].distanceFrom(latlng[</span><span style="background-color: #F5F5F5; color: #000000; ">1</span><span style="background-color: #F5F5F5; color: #000000; ">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">return</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;d;<br />}<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">body&nbsp;</span><span style="color: #FF0000; ">onload</span><span style="color: #0000FF; ">="initialize()"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">div&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="map_canvas"</span><span style="color: #FF0000; ">&nbsp;style</span><span style="color: #0000FF; ">="width:&nbsp;500px;&nbsp;height:&nbsp;400px"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">a&nbsp;</span><span style="color: #FF0000; ">href</span><span style="color: #0000FF; ">="#this"</span><span style="color: #FF0000; ">&nbsp;onclick</span><span style="color: #0000FF; ">="getDistance();"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">开始测距</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span></div><br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/dongbule/46046/r_r.png" height="433" width="512" /><br /><br /><div>例子给完了，其中测距的计算是抄了google的示例，想简单拿来应用的到这里就可以结束了，还有点兴趣的可以看看下面的简单分析：</div><br /><div>说到测距无非就是线的计算，根据google map api，测距的线性实现我们采用<strong>Polyline</strong>类，<strong>Polyline</strong>是折线是地图上的连接线段的线性叠加层，扩展自MVCObject。</div><br /><div>测距是由线组成，然后根据一组线的长短计算出线的启动和终点线的距离，根据这个思路，我们定义出<br />var <strong>polyline</strong>;<br />var <strong>polylinesArray </strong>= [];<br />其中polyline是当前画出来这条线，polylinesArray是一个数组，当每话出一条线就将这条线push到polylinesArray这个数组中去。</div><br /><div>另外一条线其实是由两个点，始点和终点所组成，所以我们也定义一个<br />var lenArray = []; <br />lenArray是一个数组，用来记录鼠标点过的每一个点的信息<br />也就是说整个测距是由每一条线所组成，而一条线是由2个点组成。<br /><br />思路理清楚了，接着一步一步看<br /><br />当我们点击了开始测距时，就需要启动一个事件的监听，对整个map的click事件监听<br />&nbsp;&nbsp; &nbsp;rule = google.maps.event.addListener(map,"click",function(event){<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addMarker(event.latLng);<br />&nbsp;&nbsp; &nbsp;});<br />当我们在地图上进行点击时，就会新增一个maker点，并且将这个maker压入lenArray数组，以便于后面的计算<br />function addMarker(location){<br />...<br />marker = new google.maps.Marker(myOptions);<br />...<br />lenArray.push(marker);<br />drawOverlay();<br />接着会调用drawOverlay();使用polyline来画线<br />&nbsp;&nbsp; &nbsp;var flightPlanCoordinates = [];<br />&nbsp;&nbsp; &nbsp;//将坐标压入路线数组<br />&nbsp;&nbsp; &nbsp;if (lenArray) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (i in lenArray) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;flightPlanCoordinates.push(lenArray[i].getPosition());<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;var polylineOptions = {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;path : flightPlanCoordinates,<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;map : map,<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;strokeColor : "#FF0000",<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;strokeOpacity : 1.0,<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;strokeWeight : 2<br />&nbsp;&nbsp; &nbsp;};<br />&nbsp;&nbsp; &nbsp;polyline = new google.maps.Polyline(polylineOptions);</div><br /><div>其中<strong>polylineOptions</strong>的path参数是折线坐标的有序序列。可以使用一个简单的 LatLng 数组或者 LatLng 的 MVCArray 指定此路径。请注意，如果您传<br /><br />递简单的数组，则它会转换为 MVCArray。在 MVCArray 中插入或删除 LatLng 将自动更新地图上的折线。<br />flightPlanCoordinates数组用于存储在上面我们定义的lenArray数组的坐标值，每点击一次就压入一对坐标值。<br />strokeColor和strokeOpacity，strokeWeight是一些样式的参数，如指定线条的宽度等等。<br />最后我们将定义的polyline进行setMap，在地图上展现，并将polyline压入到polylinesArray数组中去。<br />&nbsp;&nbsp; &nbsp;polyline.setMap(map);<br />&nbsp;&nbsp; &nbsp;polylinesArray.push(polyline);<br />到这里，线和点的展现已经完成了，接下来是需要将这些点线转换成我们需要的距离值。<br /><br />google.maps.Polyline.prototype.getLength = function() {<br />&nbsp;&nbsp; &nbsp;var d = 0;<br />&nbsp;&nbsp; &nbsp;var path = this.getPath();<br />&nbsp;&nbsp; &nbsp;var latlng;<br />&nbsp;&nbsp; &nbsp;for (var i = 0; i &lt; path.getLength() - 1; i++) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;latlng = [path.getAt(i), path.getAt(i + 1)];<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;d += latlng[0].distanceFrom(latlng[1]);<br />&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;return d;<br />}</div><br /><div>这里需要讲明的是this.getPath();它的说明是检索第一条路径。并且返回值是一组MVCArray.&lt;LatLng&gt;，也就是实际存储了一条线的坐标值，在这里取出这些坐标的数组，并且进行循环distanceFrom计算<br /><br />google.maps.LatLng.prototype.distanceFrom = function(latlng) {<br />&nbsp;&nbsp; &nbsp;var lat = [this.lat(), latlng.lat()]<br />&nbsp;&nbsp; &nbsp;var lng = [this.lng(), latlng.lng()] <br />&nbsp;&nbsp; &nbsp;var R = 6378137;<br />&nbsp;&nbsp; &nbsp;var dLat = (lat[1] - lat[0]) * Math.PI / 180;<br />&nbsp;&nbsp; &nbsp;var dLng = (lng[1] - lng[0]) * Math.PI / 180;<br />&nbsp;&nbsp; &nbsp;var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat[0] * Math.PI / 180) * Math.cos(lat[1] * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2);<br />&nbsp;&nbsp; &nbsp;var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));<br />&nbsp;&nbsp; &nbsp;var d = R * c;<br />&nbsp;&nbsp; &nbsp;return Math.round(d);<br />} <br />这段计算实际上是抄自google map示例的，是将我们的坐标值转换成我们需要计算的距离值，这里就不分析，有兴趣可以玩玩，没兴趣就直接抄过去吧。<br /><br />结果出来了，这个就是我们需要的测距的距离，当然你也可以用其他方式进行展现<br /><br /><strong>alert((polyline.getLength()/1000).toFixed(3) + "km");</strong><br /><div>只要阅读google api和自己思路清楚，一个测距的demo很快就完成了，稍加装饰基本就可以应用于生产上</div><br /><div>如果你也在进行google map的开发，欢迎赐教和讨论，建了个qq群：11029590</div></div><img src ="http://www.blogjava.net/dongbule/aggbug/351597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dongbule/" target="_blank">陈于喆</a> 2011-06-02 14:01 <a href="http://www.blogjava.net/dongbule/archive/2011/06/02/351597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>房产地图google map的初步应用点滴.3)</title><link>http://www.blogjava.net/dongbule/archive/2011/03/30/347304.html</link><dc:creator>陈于喆</dc:creator><author>陈于喆</author><pubDate>Wed, 30 Mar 2011 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/dongbule/archive/2011/03/30/347304.html</guid><wfw:comment>http://www.blogjava.net/dongbule/comments/347304.html</wfw:comment><comments>http://www.blogjava.net/dongbule/archive/2011/03/30/347304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dongbule/comments/commentRss/347304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dongbule/services/trackbacks/347304.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 房产地图google map的初步应用点滴.1)房产地图google map的初步应用点滴.2)房产地图google map的初步应用点滴.3)房产地图google map的初步应用点滴.4)google Map的交互基本都是事件驱动的，这表示js是通过生成时间来响应交互的，并且处于监听我们设定的事件，每个 Google Maps API 对象都可导出大量已命名的事件。如果程序想要...&nbsp;&nbsp;<a href='http://www.blogjava.net/dongbule/archive/2011/03/30/347304.html'>阅读全文</a><img src ="http://www.blogjava.net/dongbule/aggbug/347304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dongbule/" target="_blank">陈于喆</a> 2011-03-30 16:58 <a href="http://www.blogjava.net/dongbule/archive/2011/03/30/347304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>房产地图google map的初步应用点滴.2)</title><link>http://www.blogjava.net/dongbule/archive/2011/03/05/345786.html</link><dc:creator>陈于喆</dc:creator><author>陈于喆</author><pubDate>Sat, 05 Mar 2011 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/dongbule/archive/2011/03/05/345786.html</guid><wfw:comment>http://www.blogjava.net/dongbule/comments/345786.html</wfw:comment><comments>http://www.blogjava.net/dongbule/archive/2011/03/05/345786.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/dongbule/comments/commentRss/345786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dongbule/services/trackbacks/345786.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 房产地图google map的初步应用点滴.1)房产地图google map的初步应用点滴.2)房产地图google map的初步应用点滴.3)房产地图google map的初步应用点滴.4)本来是想将房产地图google map的应用记录一个系列，但继1)记录完之后总找不到时间继续记录下去，1)中主要解决了Google Maps JavaScript API V3 与 Googl...&nbsp;&nbsp;<a href='http://www.blogjava.net/dongbule/archive/2011/03/05/345786.html'>阅读全文</a><img src ="http://www.blogjava.net/dongbule/aggbug/345786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dongbule/" target="_blank">陈于喆</a> 2011-03-05 16:02 <a href="http://www.blogjava.net/dongbule/archive/2011/03/05/345786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>房产地图google map的初步应用点滴.1)</title><link>http://www.blogjava.net/dongbule/archive/2011/02/12/344141.html</link><dc:creator>陈于喆</dc:creator><author>陈于喆</author><pubDate>Sat, 12 Feb 2011 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/dongbule/archive/2011/02/12/344141.html</guid><wfw:comment>http://www.blogjava.net/dongbule/comments/344141.html</wfw:comment><comments>http://www.blogjava.net/dongbule/archive/2011/02/12/344141.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/dongbule/comments/commentRss/344141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dongbule/services/trackbacks/344141.html</trackback:ping><description><![CDATA[<br />
<a id="homepage1_HomePageDays_DaysList_ctl02_DayItem_DayList_ctl00_TitleUrl" href="../archive/2011/02/12/344141.html">房产地图google map的初步应用点滴.1)</a><br />
<a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" href="../archive/2011/03/05/345786.html">房产地图google map的初步应用点滴.2)</a><br />
<a id="viewpost1_TitleUrl" href="../archive/2011/03/30/347304.html">房产地图google map的初步应用点滴.3)</a><br /><div><a id="Editor_Results_rprSelectionList_ctl01_LinkTitle" href="../archive/2011/06/archive/2011/06/02/351597.html">房产地图google map的初步应用点滴.4)</a></div><br />
<br />
以前的房产地图一直都是使用有道地图，虽然有道地图是很好，但是为了更好，还是决定使用google地图来重新开发^_^，下面是一个开发完毕的简单应用http://xf.house.163.com/gz/map/000B.html<br />
<br />
<strong>1)整合Google Maps JavaScript API V3 与 Google Local Search API</strong><br />
<br />
<strong>Google Maps JavaScript API V3 </strong><br />
地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/<br />
<br />
Google Maps JavaScript API V3 文档读起来真的是很清晰，各种demo也很齐全，并且论坛的拥有巨大的论坛支持，对比了一下Google Maps JavaScript API V3 和 V2 的版本，虽然第3版的 Google Maps API 看上去跟第2版挺相识，但在内在机制上有了较大的变化，尤其在对移动浏览器的支持上，专门针对iphone和android设备的开发。V2版本google已经宣布不再予以继续支持，所以还是选择了V3版本。<br />
<br />
<strong>Google Local Search API</strong><br />
地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/localsearch/index.html<br />
<br />
上面的地址是目前Local Search的最新地址，但郁闷的是居然挂上了 Deprecated ，一样的文档也相当齐全，在应用之前需要先为你的域名申请一个API key，这个是注册地址http://code.google.com/intl/zh-CN/apis/maps/signup.html，很简单，按照提示很快就搞定了。<br />
<br />
<br />
在整合Google Maps JavaScript API V3和Google Local Search API发现这两个版本是不兼容的，Local Search API实际上还是沿用了Maps V2的接口，为了解决这个问题，需要中间一个跳板使得两者兼容，所以选择了iframe，父页面使用Google Maps V3，子页面使用Local Search API，当需要应用到本地搜索时，父页面向子页面传递查询条件，子窗口应用Local Search API获得查询的result后返回给父页面，这样就形成一个跳板，避免了两者因为版本问题而产生的冲突，当然还有其他的办法，不过iframe应该是比较简单处理，下面是一个demo<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/dongbule/map/map1.png" /><br />
<br />
父页面 : 使用的是Google Maps JavaScript API V3，http://maps.google.com/maps/api/js 网址指向 Javascript 文件所在的位置，该文件会载入使用第 3 版 Google Maps API 所需的全部符号和定义。<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Strict//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/1999/xhtml"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta&nbsp;</span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="content-type"</span><span style="color: #ff0000;">&nbsp;content</span><span style="color: #0000ff;">="text/html;&nbsp;charset=GBK"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Google&nbsp;AJAX&nbsp;Search&nbsp;API&nbsp;Sample</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">style&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/css"</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #800000;">&nbsp;<br />
@import&nbsp;url("http://www.google.com/uds/css/gsearch.css");<br />
@import&nbsp;url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");<br />
@import&nbsp;url("http://www.google.com/uds/css/gsearch.css");<br />
@import&nbsp;url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");<br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #ff0000;">&nbsp;src</span><span style="color: #0000ff;">="http://xf.house.163.com/product/js/jquery.js"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #ff0000;">&nbsp;src</span><span style="color: #0000ff;">="http://maps.google.com/maps/api/js?sensor=false"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;map;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;lat&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">23.116193</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;lng&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">113.374525</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;markersArray&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;[];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;windowArray&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;[];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;initialize()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;mapDiv&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;document.getElementById('map</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">canvas');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;google.maps.Map(mapDiv,&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;center:&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;google.maps.LatLng(lat,lng),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zoom:&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">15</span><span style="background-color: #f5f5f5; color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapTypeId:&nbsp;google.maps.MapTypeId.ROADMAP<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">删除叠加层</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;deleteOverlays()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(markersArray)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(i&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">in</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;markersArray)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;markersArray[i].setMap(</span><span style="background-color: #f5f5f5; color: #0000ff;">null</span><span style="background-color: #f5f5f5; color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;markersArray.length&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">关闭信息提示窗口</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;closeWindows()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">if</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(windowArray)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(i&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">in</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;windowArray)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;windowArray[i].close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;show(results){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.deleteOverlays();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;windowArray.length&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;i&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;results&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">&amp;&amp;</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;i&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">&lt;</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;results.length;&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000;">++</span><span style="background-color: #f5f5f5; color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showOne(results[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;showOne(result){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">console.debug(result.title+","+result.lat+":"&nbsp;+&nbsp;result.lng&nbsp;+","+result.streetAddress+","+result.city+","+result.url);</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;infowindow&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;google.maps.InfoWindow({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content:&nbsp;result.html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;marker&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;google.maps.Marker({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position:&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;google.maps.LatLng(result.lat,result.lng),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map:&nbsp;map<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;markersArray.push(marker);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;windowArray.push(infowindow);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google.maps.event.addListener(marker,&nbsp;'click',&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closeWindows();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infowindow.open(map,marker);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;searchMap(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;keyWord&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">keyWord</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">).value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapIframe.window.loadMap(</span><span style="background-color: #f5f5f5; color: #000000;">23.116193</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">113.374525</span><span style="background-color: #f5f5f5; color: #000000;">,keyWord);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google.maps.event.addDomListener(window,&nbsp;'load',&nbsp;initialize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body&nbsp;</span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="map-canvas"</span><span style="color: #ff0000;">&nbsp;style</span><span style="color: #0000ff;">="width:&nbsp;600px;&nbsp;height:&nbsp;500px"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="keyWord"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="keyWord"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">input&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;">&nbsp;onclick</span><span style="color: #0000ff;">="searchMap();"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="查询"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="btn"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">iframe&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="mapIframe"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="mapIframe"</span><span style="color: #ff0000;">&nbsp;style</span><span style="color: #0000ff;">="display:none"</span><span style="color: #ff0000;">&nbsp;src</span><span style="color: #0000ff;">="local.html"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">iframe</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
<br />
<br />
子页面：http://www.google.com/jsapi?key 需要在google进行申请与域名绑定<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Strict//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/1999/xhtml"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta&nbsp;</span><span style="color: #ff0000;">http-equiv</span><span style="color: #0000ff;">="content-type"</span><span style="color: #ff0000;">&nbsp;content</span><span style="color: #0000ff;">="text/html;&nbsp;charset=GBK"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="http://www.google.com/jsapi?key=ABQIAAAAtV_DTJOYJT-9cvTO-5KJ2BSnjw5qeDlzCnItJoREFggHbBwu_RQBEyFqvq_vMlzqsS4afIB8ZIvMkw"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;google.load('search',&nbsp;'</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">');<br />
&nbsp;&nbsp;&nbsp;&nbsp;google.load('maps',&nbsp;'</span><span style="background-color: #f5f5f5; color: #000000;">2</span><span style="background-color: #f5f5f5; color: #000000;">');<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;loadMap(lat,lng,keyWord)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;point&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;GLatLng(lat,lng);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.debug(keyWord</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">lat</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">lng);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searchMap(point,keyWord);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;searchMap(point,keyWord){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;searcher&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;google.search.LocalSearch();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searcher.setCenterPoint(point);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searcher.setResultSetSize(GSearch.LARGE_RESULTSET);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searcher.setSearchCompleteCallback(</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">,&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.show(searcher.results);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searcher.execute(keyWord);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
摘录几个常用的Local Search API Reference<br />
<br />
new google.search.LocalSearch() : 创建了一个LocalSearch的Service<br />
<br />
searcher.setCenterPoint(point) : 它接受单一变量，该变量可以是字符串、google.maps.Map2&nbsp;或google.maps.LatLng。如果是字符串，会尝试将字符串解析为&nbsp;google.maps.LatLng<br />
<br />
searcher.setResultSetSize(8) : 调用此方法以选择由每个搜索器返回的结果数<br />
<br />
searcher.setRestriction() : 设置搜索结构类型<br />
<br />
searcher.setSearchCompleteCallback() :　此方法用于注册对象和方法以通知搜索完成。应用程序可以通过使用&nbsp;opt_arguments之后随意传入环境参数<br />
<br />
searcher.execute(keyWord) :&nbsp; 调用此方法以开始新的搜索　<br />
<br />
第一步解决了map和local search的版本冲突后，下面可以进行全部的开发，Google Maps JavaScript API提供的UI，EVENT相关接口非常之多，但不一定就能直接适用我们的需求，还需要使用继承基类MVCObject，OverlayView等继续封装。<br />
<br />
如果你也在进行google map的开发，欢迎赐教和讨论，建了个qq群：11029590<br />
<br />
----------------------------------------<br />
<br />
by 陈于喆 <br />
QQ:34174409<br />
Mail: dongbule@163.com<img src ="http://www.blogjava.net/dongbule/aggbug/344141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dongbule/" target="_blank">陈于喆</a> 2011-02-12 15:57 <a href="http://www.blogjava.net/dongbule/archive/2011/02/12/344141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>