<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[青梅猪马]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[by LionGG, a GIS Evangelist]]></description>
<link>http://hi.baidu.com/liongg</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[BMSL：Map Mode解析]]></title>
        <link><![CDATA[http://hi.baidu.com/liongg/blog/item/5724d42a1d048291033bf620.html]]></link>
        <description><![CDATA[
		
		<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  和传统</span><span><font face="Calibri">GIS</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">客户端架构有所不同，</span><span><font face="Calibri">BMSL</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">同</span><span><font face="Calibri">MapMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">的方式来控制</span><span><font face="Calibri">Map</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">的一些特征，比如<strong style="mso-bidi-font-weight: normal">更换地图瓦片数据，限定缩放级别，固定平移范围</strong>；甚至是控制鼠标键盘事件导航地图的方式，以及地理坐标与像素坐标的映射等。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span><font face="Calibri"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>Map</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">有属性曰</span><span><font face="Calibri">Mode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">，类型为</span><span><font face="Calibri">MapMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">。</span><span><font face="Calibri">MapMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">有子类</span><span><font face="Calibri">FlatMapMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">，</span><span><font face="Calibri">FlatMapMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">有子类</span><span><font face="Calibri">MercatorMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">，</span><span><font face="Calibri">MercatorMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">有两个子类</span><span><font face="Calibri">RoadMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">和</span><span><font face="Calibri">AerialMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">。（关系简单，不再图示）</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span><font face="Calibri"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>MercatorMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">设置了</span><span><font face="Calibri"><a target="_blank" href="http://hi.baidu.com/liongg/blog/item/4f6455fbe183381e6d22ebee.html">Web Mercator</a></font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin"><a target="_blank" href="http://hi.baidu.com/liongg/blog/item/4f6455fbe183381e6d22ebee.html">投影</a>的相关投影，</span><span><font face="Calibri">RoadMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">和</span><span><font face="Calibri">AerialMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">分别定了</span><span><font face="Calibri">Bing Maps</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">的数据类型，以及导航控件等。比如把</span><span><font face="Calibri">Map</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">的</span><span><font face="Calibri">Mode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">设置为空的</span><span><font face="Calibri">MercatorMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">，即可清除</span><span><font face="Calibri">Bing Maps</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">数据，替换其中的</span><span><font face="Calibri">TileSource</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">，即可更换底图数据。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 1"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </font></span></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">若要限制显示范围，则要定制自己的</span><span><font face="Calibri">MapMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">，比如从</span><span><font face="Calibri">RoadMode</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">继承，覆盖</span><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">GetZoomRange</span><span style="font-size: 11pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">限制缩放级别，覆盖</span><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">ConstrainView</span><span style="font-size: 11pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">限制平移范围。</span><span style="font-size: 11pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">  </span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 11pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/f20319d8ff71b31a33fa1ce3.jpg"><br>
</span></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1"><span style="font-size: 10.5pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  下文的示例，大致限定在中国经纬度范围内，缩放级别限定在</span><span style="font-size: 10.5pt; mso-fareast-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">3</span><span style="font-size: 10.5pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">和</span><span style="font-size: 10.5pt; mso-fareast-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">10</span><span style="font-size: 10.5pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">之间，并把底图数据改变为</span><span style="font-size: 10.5pt; mso-fareast-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">Google</span><span style="font-size: 10.5pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">卫星地图以及它的地图注记数据（即那些汉字标绘），如何自定义</span><span style="font-size: 10.5pt; mso-fareast-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">TileSource</span><span style="font-size: 10.5pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">请参考《</span><span style="font-size: 10.5pt; mso-fareast-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin; mso-bidi-: minor-bidi"><a href="http://hi.baidu.com/liongg/blog/item/f81a632775c25a09918f9d42.html"><span style="mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes"><span>在</span></span><span style="mso-font-kerning: 0pt; mso-no-proof: yes">BMSL</span><span style="mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes"><span>中使用</span></span><span style="mso-font-kerning: 0pt; mso-no-proof: yes">Google </span><span style="mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes"><span>地图</span></span></a></span><span style="font-size: 10.5pt; mso-ascii-: 0pt; mso-fareast-theme-font: minor-fareast; mso-no-proof: yes">》。</span></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;  public class ChinaMode : RoadMode<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private Range&lt;double&gt; validLatitudeRange = new Range&lt;double&gt;(3.92, 53.51);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private Range&lt;double&gt; validLongitudeRange = new Range&lt;double&gt;(73.60, 135.01);</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public ChinaMode()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : base()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var tileLayer = (MapTileLayer)this.Content;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tileLayer.TileSources.Clear();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tileLayer.TileSources.Add(new GoogleSatelliteTileSource());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tileLayer.TileSources.Add(new GoogleLabelTileSource());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  protected override Range&lt;double&gt; GetZoomRange(Location center)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return new Range&lt;double&gt;(3, 10);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public override bool ConstrainView(Location center, ref double zoomLevel, ref double heading, ref double pitch)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  bool isChanged = base.ConstrainView(center, ref zoomLevel, ref heading, ref pitch);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  double newLatitude = center.Latitude;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  double newLongitude = center.Longitude;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (center.Longitude &gt; validLongitudeRange.To)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  newLongitude = validLongitudeRange.To;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else if (center.Longitude &lt; validLongitudeRange.From)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  newLongitude = validLongitudeRange.From;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (center.Latitude &gt; validLatitudeRange.To)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  newLatitude = validLatitudeRange.To;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else if (center.Latitude &lt; validLatitudeRange.From)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  newLatitude = validLatitudeRange.From;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (newLatitude != center.Latitude || newLongitude != center.Longitude)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  center.Latitude = newLatitude;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  center.Longitude = newLongitude;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  isChanged = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Range&lt;double&gt; range = GetZoomRange(center);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (zoomLevel &gt; range.To)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  zoomLevel = range.To;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  isChanged = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else if (zoomLevel &lt; range.From)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  zoomLevel = range.From;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  isChanged = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return isChanged;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;  }</font></span></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 1"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </font></span></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">定义好之后，调用起来很方便。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span><font face="Calibri">XAML</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">：</span><span style="color: blue; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">&lt;</span><span style="color: #a31515; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">m</span><span style="color: blue; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">:</span><span style="color: #a31515; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">Map</span><span style="color: red; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"> x</span><span style="color: blue; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">:</span><span style="color: red; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">Name</span><span style="color: blue; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">=&quot;myMap&quot;</span><span style="color: red; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"> CredentialsProvider</span><span style="color: blue; font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">=&quot;Your Key&quot; /&gt; </span><span><font face="Calibri">C#</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">：</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>myMap.Mode = <span style="color: blue">new</span> <span style="color: #2b91af">ChinaMode</span>();</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>myMap.SetView(<span style="color: blue">new</span> <span style="color: #2b91af">Location</span>(37.5, 104.3), 4);</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes">myMap.MapForeground.TemplateApplied += (s, e) =&gt;</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>{</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>myMap.MapForeground.NavigationBar.TemplateApplied += (sender, eventArgs) =&gt;</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>{</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>myMap.MapForeground.NavigationBar.HorizontalPanel.Children.Clear();</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>};</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-size: 11pt; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>};</span></p>
<p style="text-align: left; margin: 0cm 0cm 0pt; mso-layout-grid-align: none" class="MsoNormal" align="left"><span><span style="mso-tab-count: 1"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </font></span></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">限定显示范围内，导航条中的缩放条会自动根据所设置的级别变化，但需要手工屏蔽它自带的</span><span><font face="Calibri">Road</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">、</span><span><font face="Calibri">Aerial</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">的按钮。上述</span><span><font face="Calibri">C#</font></span><span style="mso-ascii-: minor-latin; mso-fareast-theme-font: minor-fareast; mso-ascii-theme-font: minor-latin">后面的代码作用即此，请注意图中左上角的导航条变化。</span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/liongg/blog/category/bing%5Fmaps">bing_maps</a>&nbsp;<a href="http://hi.baidu.com/liongg/blog/item/5724d42a1d048291033bf620.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月17日 星期二  13:50</pubDate>
        <category><![CDATA[bing_maps]]></category>
        <author><![CDATA[LionGG]]></author>
		<guid>http://hi.baidu.com/liongg/blog/item/5724d42a1d048291033bf620.html</guid>
</item>

<item>
        <title><![CDATA[BMSL V1新特性]]></title>
        <link><![CDATA[http://hi.baidu.com/liongg/blog/item/09e554e75f389f24b9382099.html]]></link>
        <description><![CDATA[
		
		<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>BMSL V1</span><span style="mso-ascii-: minor-latin">除包含</span><span style="mso-fareast-: minor-bidi">CTP</span><span style="mso-ascii-: minor-latin">版的诸如</span><span style="mso-fareast-: minor-bidi">DeepZoom</span><span style="mso-ascii-: minor-latin">等所有特性外，基于</span><span style="mso-fareast-: minor-bidi">Silverlight3</span><span style="mso-ascii-: minor-latin">构建，支持</span><span style="mso-fareast-: minor-bidi">OOB</span><span style="mso-ascii-: minor-latin">，</span><span style="mso-fareast-: minor-bidi">Blend</span><span style="mso-ascii-: minor-latin">设计时，并利用</span><span style="mso-fareast-: minor-bidi">Bing Maps Key</span><span style="mso-ascii-: minor-latin">的方式授权。值得一提的新功能有：</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>Map Mode</span><span style="mso-ascii-: minor-latin">的扩展性增强，比如新增的</span><span>&ldquo;</span><span style="mso-fareast-: minor-bidi"><a href="http://www.microsoft.com/maps/isdk/silverlight/#MapControlInteractiveSdk.Tutorials.Modes.TutorialFadingLabels"><font color="#0000ff">Fading Labels</font></a></span><span>&rdquo;</span><span style="mso-ascii-: minor-latin">功能，即来源于此。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span><span style="mso-ascii-: minor-latin">内置</span><span style="mso-fareast-: minor-bidi">Pushpin</span><span style="mso-ascii-: minor-latin">及</span><span style="mso-fareast-: minor-bidi">Binding</span><span style="mso-ascii-: minor-latin">：原来没有默认的地理标记，最基本的添加个地理要素也需要自定义个形状，在</span><span style="mso-fareast-: minor-bidi">Earthware</span><span style="mso-ascii-: minor-latin">等人的呼吁下，终于默认提供了，并提供</span><span style="mso-fareast-: minor-bidi">MapItemsControl</span><span style="mso-ascii-: minor-latin">支持批量地物绑定，俺觉得后者有些多余。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span>Bing Maps Web Service</span><span style="mso-ascii-: minor-latin">：对相关类，属性，方法进行一系列包装，可以更加方便的再</span><span style="mso-fareast-: minor-bidi">BMSL</span><span style="mso-ascii-: minor-latin">中使用。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span><span style="mso-ascii-: minor-latin">国际支持：通过设置</span><span style="mso-fareast-: minor-bidi">Map</span><span style="mso-ascii-: minor-latin">的</span><span style="mso-fareast-: minor-bidi">culture</span><span style="mso-ascii-: minor-latin">属性，可以使用某地区本地的瓦片数据。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span><span style="mso-ascii-: minor-latin">可嵌入性：无需懂得编程，按照给定</span><span style="mso-fareast-: minor-bidi">URL</span><span>的参数规范，设定相应的值</span><span style="mso-ascii-: minor-latin">，嵌入到原来的程序中，即可显示地图。此功能目前有限，仅支持添加</span><span style="mso-fareast-: minor-bidi">pushpin</span><span style="mso-ascii-: minor-latin">等简单用途。</span></p>
<p style="text-indent: 21pt; margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-ascii-: minor-latin">脚本</span><span style="mso-fareast-: minor-bidi">API</span><span style="mso-ascii-: minor-latin">：对那些不愿意使用</span><span style="mso-fareast-: minor-bidi">VS</span><span style="mso-ascii-: minor-latin">等开发工具的同学们来说是个顶级好消息，利用相关</span><span style="mso-fareast-: minor-bidi">API</span><span style="mso-ascii-: minor-latin">的脚本接口，在</span><span style="mso-fareast-: minor-bidi">JavaScript</span><span style="mso-ascii-: minor-latin">里完成相关开发程序。<br>
</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-bidi-font-size: 10.5pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span><span style="mso-bidi-font-size: 10.5pt">Embeddable Maps</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">和</span><span style="mso-bidi-font-size: 10.5pt">Scriptable API</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">其实是微软自己开发的在线应用程序，通过特定的</span><span style="mso-bidi-font-size: 10.5pt">URL</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">参数和脚本接口，来让普通用户使用。在线程序网址，也即使用</span><span style="mso-bidi-font-size: 10.5pt">Embeddable Maps</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">特性时的</span><span style="mso-bidi-font-size: 10.5pt">URL</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">前缀：</span><span style="mso-bidi-font-size: 10.5pt"><a href="http://dev.virtualearth.net/embeddedMap/v1/silverlight">http://dev.virtualearth.net/embeddedMap/v1/silverlight</a> </span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">；其中的</span><span style="mso-bidi-font-size: 10.5pt">XAP</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">，也即使用</span><span style="mso-bidi-font-size: 10.5pt">Scriptable API</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">必需引用的</span><span style="mso-bidi-font-size: 10.5pt">XAP</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">源：</span><span class="htmlval1"><span style="mso-bidi-font-size: 10.5pt"><a href="http://dev.virtualearth.net/silverlight/mapcontrol/v1/Microsoft.Maps.MapControl.xap">http://dev.virtualearth.net/silverlight/mapcontrol/v1/Microsoft.Maps.MapControl.xap</a><font color="#0000ff"> </font></span></span><span class="htmlval1"><span style="color: windowtext; mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">。<br>
</span></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal" align="center"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/e6e7f01f7a9dc3dbe0fe0b88.jpg"></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal" align="center"> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal" align="center"> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal" align="left"><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   把该</span><span style="mso-bidi-font-size: 10.5pt">XAP</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">下载解压缩反编译，可以发现程序集</span><span style="mso-bidi-font-size: 10.5pt">Microsoft.Maps.MapControl.Scripting.dll</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">中的</span><span style="mso-bidi-font-size: 10.5pt; mso-hansi-: minor-latin">ScriptableMap</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">从</span><span style="mso-bidi-font-size: 10.5pt; mso-hansi-: minor-latin">Map</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">继承，</span><span style="mso-bidi-font-size: 10.5pt; mso-hansi-: minor-latin">ScriptableMapLayer</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">从</span><span style="mso-bidi-font-size: 10.5pt; mso-hansi-: minor-latin">MapLayer</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">继承，开放相应接口，共同构成</span><span style="mso-bidi-font-size: 10.5pt">Scriptable </span><span style="mso-fareast-: minor-bidi">API</span><span style="mso-ascii-: minor-latin">。而在</span><span style="mso-fareast-: minor-bidi; mso-hansi-: minor-latin">App</span><span style="mso-ascii-: minor-latin">类的</span><span style="mso-fareast-: minor-bidi; mso-hansi-: minor-latin">Application_Startup</span><span style="mso-ascii-: minor-latin">中，根据规范的</span><span style="mso-fareast-: minor-bidi; mso-hansi-: minor-latin">URL</span><span style="mso-ascii-: minor-latin">参数，来载入相应的地图数据，从而支持了</span><span style="mso-bidi-font-size: 10.5pt">Embeddable Map</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">功能。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="mso-fareast-: minor-bidi"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </span></span><span style="mso-ascii-: minor-latin">基本来说，新特性就上述这么点东西。对比</span><span style="mso-fareast-: minor-bidi">EarthWare</span><span style="mso-ascii-: minor-latin">的</span><span>&ldquo;</span><span style="mso-fareast-: minor-bidi"><a href="http://www.earthware.co.uk/blog/index.php/2009/06/bing-maps-silverlight-control-top-10-wish-list-for-release/">top-10-wish-list</a></span><span>&rdquo;</span><span style="mso-ascii-: minor-latin">还差得老远，比如模块的重新设计，</span><span style="mso-fareast-: minor-bidi">KML/GeoRSS</span><span style="mso-ascii-: minor-latin">的内置支持，</span><span style="mso-fareast-: minor-bidi">Clustering</span><span style="mso-ascii-: minor-latin">，绘制工具，导航控件自定义风格能够更容易等等。因此估计他们和我一样不免失望。</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 1"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   </font></span></span><span style="mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-fareast-: minor-latin">但同时</span><span style="mso-bidi-font-size: 10.5pt">Embeddable Maps</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">和</span><span style="mso-bidi-font-size: 10.5pt">Scriptable API</span><span style="mso-bidi-font-size: 10.5pt; mso-fareast-: minor-fareast">功能的支持方法，也提醒我们，不要总想着依赖基础商给我们定制太多的东西，很多好玩的，我们自己，或者说更靠近用户的开发商，可以自己去玩玩。</span></p>
<p> </p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal" align="center"> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/liongg/blog/category/bing%5Fmaps">bing_maps</a>&nbsp;<a href="http://hi.baidu.com/liongg/blog/item/09e554e75f389f24b9382099.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月15日 星期日  16:01</pubDate>
        <category><![CDATA[bing_maps]]></category>
        <author><![CDATA[LionGG]]></author>
		<guid>http://hi.baidu.com/liongg/blog/item/09e554e75f389f24b9382099.html</guid>
</item>

<item>
        <title><![CDATA[在BMSL中使用Google 地图]]></title>
        <link><![CDATA[http://hi.baidu.com/liongg/blog/item/f81a632775c25a09918f9d42.html]]></link>
        <description><![CDATA[
		
		<p>BMSL，即Bing Maps Silverlight Control的简称，入门请看<a target="_blank" href="http://hi.baidu.com/liongg/blog/item/69dcad6e169df5d081cb4a09.html">帮助文档和iSDK</a>，比如申请Key之类，否则会出现&ldquo;Invalidate Credentials &rdquo;的警告。看题目貌似我又来砸场子了，其实不是。遥想当年，Google Maps刚刚诞生之时，并无相应的API。不久就有人Hack之，于是Google就顺势推出API，自此风靡……此外，这也并非全部是我的原创，关注BMSL这么久，各种文章看得也不少（参考文献就不列了），自此算是总结性的进阶教程。<br>
<br>
言归正传，首先，正规性的用自己的数据继承TileSource，比如我们利用Google地图的瓦片数据：<br>
&nbsp;&nbsp;&nbsp;  public class GoogleMapsTileSource : TileSource<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public GoogleMapsTileSource()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : base(&quot;<a href="http://mt%7b0%7d.google.com/vt/lyrs=m@107&amp;hl=en&amp;x=%7B1%7D&amp;y=%7B2%7D&amp;z=%7B3%7D&amp;s=Ga">http://mt{0}.google.com/vt/lyrs=m@107&amp;hl=en&amp;x={1}&amp;y={2}&amp;z={3}&amp;s=Ga</a>&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public override Uri GetUri(int x, int y, int zoomLevel)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int num = ((x &amp; 1) &lt;&lt; 1) | (y &amp; 1);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return new Uri(string.Format(this.UriFormat, num, x, y, zoomLevel));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
}<br>
然后，将其作为MapTileLayer的属性，加到Map中即可。XAML形式：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:Map CredentialsProvider={YourKey}&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:Map.Children&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:MapTileLayer&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:MapTileLayer.TileSources&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;local:GoogleMapsTileSource /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:MapTileLayer.TileSources&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:MapTileLayer&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:Map.Children&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;/m:Map&gt;</p>
<p>如此这般，即可得到Google Maps的简易Silverlight版本，但若用Fiddler等工具查看就会发现，上述程序后台仍旧下载了Bing Maps的数据。其实是因为在Bing Maps上覆盖了一层Google Maps的数据，后面的一层看不到而已。于是再进一步，去掉Bing Maps的数据。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:Map CredentialsProvider={YourKey}&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:Map.Mode&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;mCore:MercatorMode /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:Map.Mode&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:Map.Children&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:MapTileLayer&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;m:MapTileLayer.TileSources&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;local:GoogleMapsTileSource /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:MapTileLayer.TileSources&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:MapTileLayer&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/m:Map.Children&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;/m:Map&gt;<br>
也即加入了Mode的控制，把Map的Mode由默认的RoadMode（AerialMode）设置为空，即他们的父类MercatorMode。在BMSL中，Mode的能耐挺大，后续专文介绍。现在用Fiddler一看，便只有Goolge Maps的数据了。</p>
<p align="center"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/c54c43a93fe215d21e17a299.jpg"></span></p>
<p>但是，虽然我们只用了Google Maps的数据，却仍然需要Bing Maps的验证密钥CredentialsProvider={YourKey}，能不能去掉它？CredentialsProvider是Map的属性，那不用这个Map类，即可忽略这个类的属性。于是我们想到从当前Map的父类MapCore去继承，写出一个自己的Map。如下，注意MapMode又出现了。<br>
&nbsp;&nbsp;&nbsp;  public class GoogleMaps : MapCore<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public GoogleMaps()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : base()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Mode = new GoogleMapsMode();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  public class GoogleMapsMode : RoadMode<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public GoogleMapsMode()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : base()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var tileLayer = (MapTileLayer)this.Content;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tileLayer.TileSources.Clear();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tileLayer.TileSources.Add(new GoogleMapsTileSource());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
}<br>
在XAML的关键语句一行即可: &lt;local:GoogleMaps /&gt;</p>
<p>至此，本文基本结束。上述方法造成默认的导航等控件消失，不过没关系，我博客里多次提到的<a target="_blank" href="http://hi.baidu.com/liongg/blog/item/1f2b4f4ad31f992b09f7efaa.html">DeepEarth</a>等项目提供了不少，而且自定义也未尝不可。同时，再扩展下，可利用Google Maps的卫星影像，地形地图等等。PS:本文仅作学习之用，勿要商用，要不然微软和谷歌会一起来打你PP，呵呵。</p>
<p> </p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/liongg/blog/category/bing%5Fmaps">bing_maps</a>&nbsp;<a href="http://hi.baidu.com/liongg/blog/item/f81a632775c25a09918f9d42.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月14日 星期六  10:32</pubDate>
        <category><![CDATA[bing_maps]]></category>
        <author><![CDATA[LionGG]]></author>
		<guid>http://hi.baidu.com/liongg/blog/item/f81a632775c25a09918f9d42.html</guid>
</item>

<item>
        <title><![CDATA[Bing Maps Silverlight Control 1.0发布]]></title>
        <link><![CDATA[http://hi.baidu.com/liongg/blog/item/69dcad6e169df5d081cb4a09.html]]></link>
        <description><![CDATA[
		
		<p> </p>
<p style="margin: 0in; font-size: 11pt"><span>Bing Maps Silverlight Control</span><span>自从</span><span>3</span><span>月发布</span><span>CTP</span><span>版后，</span><span>8</span><span>个月不见动静，甚至沦落到在论坛里已经有人问这个项目是不是死掉了。终于，跳过</span><span>Beta</span><span>直接就发布正式版。参见</span><a href="http://blogs.msdn.com/veplatform/archive/2009/11/10/bing-maps-silverlight-control-available.aspx"><span>官方报道</span><span>1</span></a><span>，</span><a href="http://cn.bing.com/community/blogs/maps/archive/2009/11/09/bing-maps-silverlight-control-1-0-released.aspx"><span>官方报道</span><span>2</span></a><span>，</span><a href="http://www.microsoft.com/maps/resources/news.aspx"><span>视频新闻</span></a><span>等。同时，</span><span>Bing Maps</span><a href="http://www.bing.com/community/blogs/maps/archive/2009/11/10/bing-maps-gets-an-overhaul-and-some-new-features.aspx"><span>彻底翻新，增加了诸多新特性</span></a><span>，比如：</span><span>Draggable Routes</span><span>，缩放条样式更新，和</span><span>Silverlight Control</span><span>一致，必应版（中国版）截至目前尚未更新。</span></p>
<p style="margin: 0in; font-size: 11pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><span>因为盼得太久，所以看到邮件通知和</span><span>RSS</span><span>更新相关新闻，迫不及待统统转一圈浏览个遍。带着太大的希望，期待着太多的惊喜，最后终得来的是落差，和</span><span>CTP</span><span>版相比，尽管有诸多新特性，仍没见震撼性更新，甚至一些</span><span>bug</span><span>都不曾消除。</span></p>
<p style="margin: 0in; font-size: 11pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><span>下面播报一些相关链接，新特性介绍将另篇文章，原来打算写一系列进阶学习性的文章，如此看来，作罢。入门学习请看</span><span>iSDK</span><span>，微软必应地图大中华区业务拓展经理</span><a href="http://acnchen.spaces.live.com/blog/"><span>acnChen</span><span>博士的博客</span></a><span>也有一系列文章介绍。</span></p>
<p style="margin: 0in; font-size: 11pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><span>Bing Maps Account Center</span><span>：</span><span>注册账号申请密钥使用相关服务，</span><a href="https://www.bingmapsportal.com/"><span>申请</span><span>&gt;&gt;</span></a></p>
<p style="margin: 0in; font-size: 11pt"><span>安装包：和</span><span>Silverlight Toolkit</span><span>一样，是个</span><span>MSI</span><span>安装包，里面含有相关</span><span>DLL</span><span>，</span><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830"><span>下载</span><span>&gt;&gt;</span></a><span> </span></p>
<p style="margin: 0in; font-size: 11pt"><span>收费情况：总体上很优惠，对</span><span>Educators</span><span>和</span><span>Not-for-Profits</span><span>都免费，</span><a href="http://cn.bing.com/community/blogs/maps/archive/2009/11/09/bing-maps-terms-of-use-changes-benefit-educators-not-for-profits-and-developers.aspx"><span>详情</span><span>&gt;&gt;</span></a><span> </span></p>
<p style="margin: 0in; font-size: 11pt"><span>交互式</span><span>SDK</span><span>：入门学习就从这里开始，</span><a href="http://www.microsoft.com/maps/isdk/silverlight/"><span>iSDK&gt;&gt;</span></a><span><span style="mso-spacerun: yes"> </span></span></p>
<p style="margin: 0in; font-size: 11pt"><span>在线帮助文档：有许多专题介绍，进阶材料，</span><a href="http://msdn.microsoft.com/en-us/library/ee681884.aspx"><span>MSDN&gt;&gt;</span></a></p>
<p style="margin: 0in; font-size: 11pt">Bing Maps Control论坛：提问或者看看别人的问题，<a target="_blank" href="http://social.msdn.microsoft.com/Forums/en-US/vemapcontroldev/threads">灌水&gt;&gt;</a></p>
<p style="margin: 0in; font-size: 11pt">&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><span>附带两个</span><span>Bug</span><span>，通过</span><span>isdk</span><span>的示例都可以发现。真不好意思，一发布就来砸场子，希望下个版本能够解决，通过</span><span>acnChen</span><span>反映到开发团队。</span></p>
<p style="margin: 0in; font-size: 11pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><font color="#999999"><span>用滚轮缩放地图时，导航条的滑块上下抖动，视觉效果不好。我自己试图去解决这个</span><span>Bug</span><span>，但若让滑块不抖动，则会出现不能点击导航杆放缩，只能拖动滑块缩放。但我相信微软的工程师应该比我厉害吧……11月13日更新，这个应该是根据中心点位置实时计算缩放级别而造成的，不应该是BUG。倒是<font color="#000000">地图放在 一个大小确定的Grid中，平移时会发现在国际日期变更线处明显闪动。</font></span></font></p>
<p style="margin: 0in; font-size: 11pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><span>以</span><a href="http://www.microsoft.com/maps/isdk/silverlight/#MapControlInteractiveSdk.Tutorials.TutorialAddShapeLayer"><span>iSDK</span><span>中</span><span>&quot;Add a shape layer&quot;</span></a><span>为例，当地图放大到倒数第</span><span>4</span><span>级时，三角形是正常的；但再放大一个级别，三角形的填充就反了。如图所示，俺故意选取了湖泊陆地交界的区域更容易看，填充到三角形外围了；继续放大可能就又对了，将出现随机填充的情况。我向别人咨询过，据说是</span><span>Windows </span><span>裁剪的问题，在</span><span>GIS</span><span>中是个老问题，有较为成熟的解决方案。</span></p>
<p style="margin: 0in; font-size: 11pt"> </p>
<p style="margin: 0in; font-size: 11pt"><span><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/ea2b720e2dd560e47bcbe13a.jpg"><br>
</span></span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/liongg/blog/category/bing%5Fmaps">bing_maps</a>&nbsp;<a href="http://hi.baidu.com/liongg/blog/item/69dcad6e169df5d081cb4a09.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月11日 星期三  11:19</pubDate>
        <category><![CDATA[bing_maps]]></category>
        <author><![CDATA[LionGG]]></author>
		<guid>http://hi.baidu.com/liongg/blog/item/69dcad6e169df5d081cb4a09.html</guid>
</item>

<item>
        <title><![CDATA[Marker Cluster面面观]]></title>
        <link><![CDATA[http://hi.baidu.com/liongg/blog/item/23d381cbe88d17f752664f0e.html]]></link>
        <description><![CDATA[
		
		<p style="margin: 0cm 0cm 0pt"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">问题描述：当向地图上加载大数量</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Marker</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">或者</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Pushpin</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">时，会出现彼此覆盖和加载速度过慢的问题，解决方案就是</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Marker Cluster</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">或者叫</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Pushpin Clustering</span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">。</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;<span align="left"><br>
</span></span></font></p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">GoogleMaps</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">的解决方案：《</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google-maps/">Handling Large Amounts of Markers in Google Maps</a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">》详细论述并比较了</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Google Maps</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">上目前的</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">7</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">种解决方案。若果非得挑选一种，那就是</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Google Geo</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">今年</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">4</span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">月在</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://googlegeodevelopers.blogspot.com/2009/04/markerclusterer-solution-to-too-many.html"><span><span><font color="#0000ff">官方博客</font></span></span></a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">中提到的</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&ldquo;</span></font><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">MarkerClusterer</span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&rdquo;</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">，作者是中国的工程师</span></font><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Xiaoxi Wu</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">，而且已经开源，放到</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/">gmaps-utility-library</a></span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">中了。</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/850a918fbc1ca3d4503d924c.jpg"></p>
<p style="margin: 0cm 0cm 0pt"><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></font></p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></font></p>
<p style="margin: 0cm 0cm 0pt 18pt"> </p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Bing Maps</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">的解决方案：微软于去年</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">9</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">月发布</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">6.2</span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">版时</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://cn.bing.com/community/blogs/maps/archive/2008/09/24/announcing-the-virtual-earth-web-service-and-virtual-earth-map-control-6-2.aspx"><span><span>官方支持</span></span></a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">，称之为</span></font><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Pushpin Clustering</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">。在</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://www.microsoft.com/maps/isdk/ajax/"><span><span>交互式</span></span>iSDK</a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">中</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">Customize Shape</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">下有个</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"> Pushpin cluster </span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">，同时有两篇文章介绍</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://blogs.msdn.com/veplatform/archive/2008/10/12/clustering-pushpins-with-the-virtual-earth-map-control-api.aspx"><span><span><font color="#0000ff">如何使用</font></span></span></a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">和</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://blogs.msdn.com/veplatform/archive/2009/03/06/customizing-pushpin-clustering-with-virtual-earth-map-control-api.aspx"><span><span>如何自定义</span></span></a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">。之前也有非官方的替代方案，不再介绍。</span></font></p>
<p style="margin: 0cm 0cm 0pt"><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;</span></font><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;  </span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"> </p>
<p style="margin: 0cm 0cm 0pt" align="center"><span align="left"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/a34aad4b081edfde82025c21.jpg"><br>
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">ESRI</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">的解决方案：</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">ESRI</span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">在</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://resources.esri.com/arcgisserver/apis/flex/">Flex API</a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">中提供了解决方案，据说非常之受欢迎，</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://resources.esri.com/arcgisserver/apis/silverlight/">Silverlight API</a></span><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">也提供了类似的功能。</span></font></p>
<p style="margin: 0cm 0cm 0pt" align="center"><span align="left"><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/liongg/pic/item/e386a0ec1509fa132797914f.jpg"></span></p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"><font face="宋体"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></font></p>
<p style="margin: 0cm 0cm 0pt"> </p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">还有一些其他公司的解决方案，比如</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://www.idvsolutions.com/index.aspx">IDV</a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">，</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://www.umapper.com/"><font color="#0000ff">UMapper</font></a></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">，</font></span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><a href="http://www.maptimize.com/">Maptimize</a> </span><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体">似乎专业做这个的。</font></span></p>
<p style="margin: 0cm 0cm 0pt"><span style="font-size: 10.5pt; mso-bidi-font-size: 12.0pt"><font face="宋体"><a target="_blank" href="http://hiphotos.baidu.com/liongg/pic/item/b1f4fc0328b17da6d53f7c48.jpg"><img class="blogimg" border="0" align="left" width="200" height="185" small="1" src="http://hiphotos.baidu.com/liongg/abpic/item/b1f4fc0328b17da6d53f7c48.jpg"></a><br>
&nbsp;&nbsp;  <a target="_blank" href="http://hiphotos.baidu.com/liongg/pic/item/55769e2f02ff83161e30894b.jpg"><img class="blogimg" border="0" width="200" height="92" small="1" src="http://hiphotos.baidu.com/liongg/abpic/item/55769e2f02ff83161e30894b.jpg"></a>&nbsp;&nbsp;&nbsp;  <a target="_blank" href="http://hiphotos.baidu.com/liongg/pic/item/30aed9331f7a7a6dac4b5f43.jpg"><img class="blogimg" border="0" width="200" height="57" small="1" src="http://hiphotos.baidu.com/liongg/abpic/item/30aed9331f7a7a6dac4b5f43.jpg"></a><br>
<br>
</font></span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/liongg/blog/category/Gis">Gis</a>&nbsp;<a href="http://hi.baidu.com/liongg/blog/item/23d381cbe88d17f752664f0e.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月10日 星期二  10:55</pubDate>
        <category><![CDATA[Gis]]></category>
        <author><![CDATA[LionGG]]></author>
		<guid>http://hi.baidu.com/liongg/blog/item/23d381cbe88d17f752664f0e.html</guid>
</item>


</channel>
</rss>