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

<channel>
	<title>IT妖怪 &#187; google map</title>
	<atom:link href="http://blog.ityao.com/archives/tag/google-map/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ityao.com</link>
	<description>热爱生活，热爱程序</description>
	<lastBuildDate>Wed, 03 Aug 2011 02:56:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>用Flex构建地图应用 &#8212; 利用Google Map API制作自己的地图（1）</title>
		<link>http://blog.ityao.com/archives/258</link>
		<comments>http://blog.ityao.com/archives/258#comments</comments>
		<pubDate>Sat, 12 Sep 2009 16:51:28 +0000</pubDate>
		<dc:creator>Silver</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[妖怪作品发布]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[google map]]></category>
		<category><![CDATA[地图]]></category>

		<guid isPermaLink="false">http://blog.ityao.com/?p=258</guid>
		<description><![CDATA[现在地图应用已经成为网络应用的一个大类了，各个大的网站几乎都有自己的地图产品。最出名的莫过于国外的Google Map和国内的都市圈地图，前面Daniel Yang介绍了都市圈的Flex源代码，小弟也来一个介绍Flex构建地图的系列，希望能够让大家分享到地图开发的乐趣。 不过自己毕竟不是GIS科班出身，也没从事过GIS或者地图的真正商业开发，研究地图应用开发，纯属兴趣，所以不足之处，敬请斧正:) 构建Flex地图应用，首选Google的地图API来实现，有以下原因： 支持自定义扩展地图类型 有丰富的图形标注工具 有多种数据接口 详细的文档支持 Google map API的这些特点，可以使我们快速地开发出各式各样的地图web应用，由于本帖不是替google map打广告，就不一一介绍这些特点的详细情况了，本帖更关注于第一个特点，利用Google map api来构建属于自己的地图。 或者大家会问：构建自己的地图？可以是什么样子的呢？ 小弟天马行空地替大家想象了一下，我初步想大家可以构建这样的一些应用： 在专业的地图服务器里写script导出图瓦（动态或静态），然后制作自己的地图应用，最好的例子就是google地图本身 利用网络的地图图瓦资源，构造地图应用，如利用API来显示e都市的三维地图，或者如后面演示的显示别的厂商如google的对手bingo的地图，mapABC的地图等 通过修改现成的地图图瓦，来创造自己的地图。呵呵，站在巨人的肩膀上啊，例如你可以抓取google的图瓦，把上面的藏南地区全改回中文，然后发布出去 发布大型的图画作品，例如你是卖画或者什么别的艺术品，或者你要做游戏地图，可以把照片割成图瓦，挂到网上去，让大家可以在不同分辨层次下欣赏作品 协同进行艺术创作，把地图想象成大图画，大家可以在一个图画上创作，通过Map API可以进行宏观创作或者细节创作 &#8230; 更多更多好点子，欢迎在评论里面留言 首先贴一个swf，给大家看看用Google Map API来显示Live地图和MapABC地图的效果。 实现这个效果的步骤如下： 使用Flex的google map api，首先要去这里 下载 注册一个api使用的key，在这个页面进行注册 创建flex项目，项目目录结构如下图所示： 前面下载的SDK里面的map_flex_1_16.swc（下载时间不同，可能版本号不一致）需要放在项目的lib目录里面去。 创建mapsample.mxml主程序，代码如下： 注意需要在程序中修改mapKey变量成为你前面注册的google map api key。 在主程序里面，我们创建了两种自定义的地图类型，并且添加了这两种类型进google地图中进行显示 定制自定义地图，如果地图的投影方法和google map一致的话，那只要继承TileLayerBase并重载里面的loadTile（加载图瓦）方法就可以了，下一篇将用live地图和mapABC地图为大家做介绍。]]></description>
			<content:encoded><![CDATA[<p>现在地图应用已经成为网络应用的一个大类了，各个大的网站几乎都有自己的地图产品。最出名的莫过于国外的Google Map和国内的都市圈地图，前面Daniel Yang介绍了都市圈的Flex源代码，小弟也来一个介绍Flex构建地图的系列，希望能够让大家分享到地图开发的乐趣。</p>
<p>不过自己毕竟不是GIS科班出身，也没从事过GIS或者地图的真正商业开发，研究地图应用开发，纯属兴趣，所以不足之处，敬请斧正:)<br />
<span id="more-258"></span></p>
<p>构建Flex地图应用，首选Google的地图API来实现，有以下原因：</p>
<ol>
<li>支持自定义扩展地图类型</li>
<li>有丰富的图形标注工具</li>
<li>有多种数据接口</li>
<li>详细的文档支持</li>
</ol>
<p>Google map API的这些特点，可以使我们快速地开发出各式各样的地图web应用，由于本帖不是替google map打广告，就不一一介绍这些特点的详细情况了，本帖更关注于第一个特点，利用Google map api来构建属于自己的地图。</p>
<p>或者大家会问：构建自己的地图？可以是什么样子的呢？<br />
小弟天马行空地替大家想象了一下，我初步想大家可以构建这样的一些应用：</p>
<ul>
<li>在专业的地图服务器里写script导出图瓦（动态或静态），然后制作自己的地图应用，最好的例子就是google地图本身</li>
<li>利用网络的地图图瓦资源，构造地图应用，如利用API来显示e都市的三维地图，或者如后面演示的显示别的厂商如google的对手bingo的地图，mapABC的地图等</li>
<li>通过修改现成的地图图瓦，来创造自己的地图。呵呵，站在巨人的肩膀上啊，例如你可以抓取google的图瓦，把上面的藏南地区全改回中文，然后发布出去</li>
<li>发布大型的图画作品，例如你是卖画或者什么别的艺术品，或者你要做游戏地图，可以把照片割成图瓦，挂到网上去，让大家可以在不同分辨层次下欣赏作品</li>
<li>协同进行艺术创作，把地图想象成大图画，大家可以在一个图画上创作，通过Map API可以进行宏观创作或者细节创作</li>
<li>&#8230; 更多更多好点子，欢迎在评论里面留言</li>
</ul>
<p>首先贴一个swf，给大家看看用Google Map API来显示Live地图和MapABC地图的效果。<br />

<object width="500" height="300">
<param name="movie" value="http://blog.ityao.com/wp-content/uploads/2009/09/mapsample.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#FFFFFF"></param>
<embed type="application/x-shockwave-flash" width="500" height="300" src="http://blog.ityao.com/wp-content/uploads/2009/09/mapsample.swf" quality="high" bgcolor="#FFFFFF" wmode="window" menu="false" ></embed>
</object>
</p>
<p>实现这个效果的步骤如下：</p>
<ol>
<li>使用Flex的google map api，首先要去这里 <a href="http://maps.googleapis.com/maps/flash/release/sdk.zip">下载</a></li>
<li>注册一个api使用的key，在这个<a href="http://code.google.com/intl/zh-CN/apis/maps/signup.html">页面</a>进行注册</li>
<li>创建flex项目，项目目录结构如下图所示：<br />
<a href="http://blog.ityao.com/wp-content/uploads/2009/09/mapsampleproject.jpg"><img src="http://blog.ityao.com/wp-content/uploads/2009/09/mapsampleproject.jpg" alt="mapsampleproject" title="mapsampleproject" width="335" height="378" class="alignnone size-full wp-image-273" /></a><br />
前面下载的SDK里面的map_flex_1_16.swc（下载时间不同，可能版本号不一致）需要放在项目的lib目录里面去。
</li>
<li>创建mapsample.mxml主程序，代码如下：
<pre class="brush: as3; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot;&gt;
	&lt;maps:Map xmlns:maps=&quot;com.google.maps.*&quot; language=&quot;zh-CN&quot; id=&quot;map&quot;
		mapevent_mapready=&quot;onMapReady(event)&quot;
		width=&quot;100%&quot; height=&quot;100%&quot; key=&quot;{mapKey}&quot;/&gt;
	&lt;mx:Script&gt;
		&lt;![CDATA[
			import com.ityao.map.MapABCDituTileLayerBase;
			import com.ityao.map.GoogleDituTileLayerBase;
			import com.ityao.map.LiveDituTileLayerBase;			

			import com.google.maps.overlays.TileLayerOverlay;
			import com.google.maps.controls.MapTypeControl;
			import com.google.maps.controls.PositionControl;
			import com.google.maps.controls.ZoomControl;
			import com.google.maps.LatLng;
			import com.google.maps.Map;
			import com.google.maps.MapEvent;
			import com.google.maps.MapType;    

			//key for http://blog.ityao.com/
			private static const mapKey:String = &quot;ABQIAAAAjg2LNPeLd2SY_LMC4kTfyhREhvxbmPPYdzuafsMTRfCiNgtm-xT_QN9uPU6M7JTAKA4l_ycXr_8HOg&quot;;
			private function onMapReady(event:Event):void {				      

				map.addControl(new ZoomControl());
				map.addControl(new PositionControl());
				map.addControl(new MapTypeControl());
				map.removeMapType(MapType.PHYSICAL_MAP_TYPE);
				map.removeMapType(MapType.SATELLITE_MAP_TYPE);
				map.removeMapType(MapType.HYBRID_MAP_TYPE);

				//Live地图
				var liveTileBase:LiveDituTileLayerBase = new LiveDituTileLayerBase();
				var liveTileLayers:Array = new Array();
				liveTileLayers.push(liveTileBase);
				var liveMapType:MapType = new MapType(liveTileLayers,map.MERCATOR_PROJECTION,&quot;Live地图&quot;);
				liveTileBase.setMapType(liveMapType);
				map.addMapType(liveMapType);

				//mapABC地图
				var mapABCDituTileLayerBase:MapABCDituTileLayerBase = new MapABCDituTileLayerBase();
				var mapABCDituTileLayers:Array = new Array();
				mapABCDituTileLayers.push(mapABCDituTileLayerBase);
				var mapABCDituMapType:MapType = new MapType(mapABCDituTileLayers,map.MERCATOR_PROJECTION,&quot;mapABC地图&quot;);
				mapABCDituTileLayerBase.setMapType(mapABCDituMapType);
				map.addMapType(mapABCDituMapType);
				//设置缺省的地图中心和地图类型
				map.setCenter(new LatLng(23.09656,113.19219), 10);
			}
		]]&gt;
	&lt;/mx:Script&gt;
&lt;/mx:Application&gt;
</pre>
<p>注意需要在程序中修改mapKey变量成为你前面注册的google map api key。
</li>
<li>在主程序里面，我们创建了两种自定义的地图类型，并且添加了这两种类型进google地图中进行显示</li>
</ol>
<p>定制自定义地图，如果地图的投影方法和google map一致的话，那只要继承TileLayerBase并重载里面的loadTile（加载图瓦）方法就可以了，下一篇将用live地图和mapABC地图为大家做介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ityao.com/archives/258/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

