Google Maps + Flex Mobile
2011-11-25 11:52
309 查看
问题
您想显示设备当前位置的地图。
解决方案
使用谷歌地图和GPS的Flex API来显示地图,并显示当前位置。
详细解释
“Google地图”的Flash / Flex版本使得它很容易添加地图到Flex和Flex移动应用中。这个简单的例子,将增加谷歌地图的控制器,以及显示当前位置的标记,让当前位置居中。
它是如何工作的:
当加载地图完成,onMapReady方法被调用。在onMapReady方法中法中发生了下面的事情。
首先一个新的MarkerOptions对象被创建并命名为markerOptions。这个对象保存有关的地图标记的各种信息。接下来,标记被实例化为一个类变量,并且暂时放置在地图的中心。 接下来,标记被实例化一个类变量,放置在地图的中心暂时。下一步,地图被居中,设置到缩放级别10、MapType.NORMAL_MAP_TYPE类型。一个缩放控制被添,而且标记添加其上。最后,startGPS方法被调用。
在startGPS方法中,我们进行检查,以确保GPS是可利用并打开。如果是的话,我们设置一个事件监听器,监听更新和按照设置的时间间隔每3秒检查更新。地理位置设置的详细信息,请点这里阅读。
当handleLocationRequest方法每3秒被调用,地图的中心设置为新的经度和纬度。TextArea的消息设置为新经度和纬度,标记也重新定位按照最新的经度和纬度。这就是所有事情,看到下面的屏幕截图。
下面是代码。 (注意:要运行此您将需要得到你自己的Google地图的密匙,并设置URL。)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns:maps="com.google.maps.*">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.google.maps.InfoWindowOptions;
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;
import com.google.maps.controls.ZoomControl;
import com.google.maps.overlays.Marker;
import com.google.maps.overlays.MarkerOptions;
import flash.sensors.Geolocation;
private var geoLocation:Geolocation;
private var mapZoom:int = 14;
[Embed(source="blue-dot.png")]
private var mapIcon:Class;
private var marker:Marker;
private function onMapReady(event:Event):void {
var markerOptions:MarkerOptions = new MarkerOptions();
markerOptions.icon = new mapIcon();
markerOptions.iconAlignment = MarkerOptions.ALIGN_HORIZONTAL_CENTER;
markerOptions.iconOffset = new Point(2, 2);
marker = new Marker(map.getCenter(), markerOptions);
map.setCenter(new LatLng(39,-86), 10, MapType.NORMAL_MAP_TYPE);
map.addControl(new ZoomControl());
map.addOverlay(marker);
startGPS();
}
protected function startGPS():void {
if(Geolocation.isSupported){
geoLocation = new Geolocation();
if(geoLocation.muted){
info.text = "Hey, turn on your GPS please";
}
geoLocation.setRequestedUpdateInterval(3000);
geoLocation.addEventListener(GeolocationEvent.UPDATE, handleLocationRequest);
} else {
info.text = "GPS not supported";
}
}
private function handleLocationRequest(event:GeolocationEvent):void {
map.setCenter(new LatLng(event.latitude,event.longitude));
info.text = "Latitude: " + event.latitude.toString() + "\nLongitude: " + event.longitude.toString();
marker.setLatLng(new LatLng(event.latitude,event.longitude));
}
]]>
</fx:Script>
<s:TextArea id="info" top="10" height="100" width="100%" editable="false"/>
<maps:Map id="map" mapevent_mapready="onMapReady(event)" sensor="false"
url="http://www.yourdomain.com"
top="110" bottom="0" width="100%"
key="please use your own key"/>
</s:Application>
您想显示设备当前位置的地图。
解决方案
使用谷歌地图和GPS的Flex API来显示地图,并显示当前位置。
详细解释
“Google地图”的Flash / Flex版本使得它很容易添加地图到Flex和Flex移动应用中。这个简单的例子,将增加谷歌地图的控制器,以及显示当前位置的标记,让当前位置居中。
它是如何工作的:
当加载地图完成,onMapReady方法被调用。在onMapReady方法中法中发生了下面的事情。
首先一个新的MarkerOptions对象被创建并命名为markerOptions。这个对象保存有关的地图标记的各种信息。接下来,标记被实例化为一个类变量,并且暂时放置在地图的中心。 接下来,标记被实例化一个类变量,放置在地图的中心暂时。下一步,地图被居中,设置到缩放级别10、MapType.NORMAL_MAP_TYPE类型。一个缩放控制被添,而且标记添加其上。最后,startGPS方法被调用。
在startGPS方法中,我们进行检查,以确保GPS是可利用并打开。如果是的话,我们设置一个事件监听器,监听更新和按照设置的时间间隔每3秒检查更新。地理位置设置的详细信息,请点这里阅读。
当handleLocationRequest方法每3秒被调用,地图的中心设置为新的经度和纬度。TextArea的消息设置为新经度和纬度,标记也重新定位按照最新的经度和纬度。这就是所有事情,看到下面的屏幕截图。
下面是代码。 (注意:要运行此您将需要得到你自己的Google地图的密匙,并设置URL。)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns:maps="com.google.maps.*">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.google.maps.InfoWindowOptions;
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;
import com.google.maps.controls.ZoomControl;
import com.google.maps.overlays.Marker;
import com.google.maps.overlays.MarkerOptions;
import flash.sensors.Geolocation;
private var geoLocation:Geolocation;
private var mapZoom:int = 14;
[Embed(source="blue-dot.png")]
private var mapIcon:Class;
private var marker:Marker;
private function onMapReady(event:Event):void {
var markerOptions:MarkerOptions = new MarkerOptions();
markerOptions.icon = new mapIcon();
markerOptions.iconAlignment = MarkerOptions.ALIGN_HORIZONTAL_CENTER;
markerOptions.iconOffset = new Point(2, 2);
marker = new Marker(map.getCenter(), markerOptions);
map.setCenter(new LatLng(39,-86), 10, MapType.NORMAL_MAP_TYPE);
map.addControl(new ZoomControl());
map.addOverlay(marker);
startGPS();
}
protected function startGPS():void {
if(Geolocation.isSupported){
geoLocation = new Geolocation();
if(geoLocation.muted){
info.text = "Hey, turn on your GPS please";
}
geoLocation.setRequestedUpdateInterval(3000);
geoLocation.addEventListener(GeolocationEvent.UPDATE, handleLocationRequest);
} else {
info.text = "GPS not supported";
}
}
private function handleLocationRequest(event:GeolocationEvent):void {
map.setCenter(new LatLng(event.latitude,event.longitude));
info.text = "Latitude: " + event.latitude.toString() + "\nLongitude: " + event.longitude.toString();
marker.setLatLng(new LatLng(event.latitude,event.longitude));
}
]]>
</fx:Script>
<s:TextArea id="info" top="10" height="100" width="100%" editable="false"/>
<maps:Map id="map" mapevent_mapready="onMapReady(event)" sensor="false"
url="http://www.yourdomain.com"
top="110" bottom="0" width="100%"
key="please use your own key"/>
</s:Application>
相关文章推荐
- Windows Live Search For Mobile vs. Google Maps Mobile
- Windows Live Search For Mobile vs. Google Maps Mobile
- 在Google Maps For Mobile之中加载KML文件
- Windows Live Search For Mobile vs. Google Maps Mobile
- GOOGLE地图基站定位-Google Mobile Maps API
- GOOGLE地图基站定位-Google Mobile Maps API
- 真机缺少com.google.android.maps.jar解决方法:
- Google Maps API 2.0解析(0-序言)
- Android:Google Maps W/dalvikvm: Unable to resolve superclass of
- 整理:Google Maps API 2 文档
- Google Maps API 2.0解析(13-支持以前1.0版本的GMap)
- Google Map Flex中实现本地搜索的两种方式
- 快去更新你的Google Map for Windows Mobile试用Buzz服务
- flex + spring + BlazeDS + google App JDO 实现一个CRUD.
- Android版使用移动广告平台集成Google Mobile Ads SDK教程
- Google Sitemaps 在线生成
- Super-Close Google Maps Zooms
- 【中文】Joomla1.7扩展介绍之Googlemaps Plugin
- Google Maps API申请 之 Android Maps API (2012-5-15新发布可解决网页打不开的问题)
- MapGuide与Google Maps集成(Integrate Google Maps into MapGuide Enterprise Fusion viewer)