我尝试采用 Shane doolan 的这个食谱,见下文(来源:http ://cookbooks.adobe.com/post_Google_Maps_Custom_Info_Window-17492.html )。我可以使用 php 从 mysql 中提取数据(例如http://code.google.com/apis/maps/articles/phpsqlflex.html)并覆盖在地图上,但是我无法通过 mxml 自定义信息窗口加载数据单击标记时。请帮忙。谢谢!
这是 mxml 应用程序:
<fx:Declarations>
<local:GoogleMapsInfoWindow id="infoWindow"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.google.maps.InfoWindowOptions;
import com.google.maps.LatLng;
import com.google.maps.MapEvent;
import com.google.maps.MapMouseEvent;
import com.google.maps.MapType;
import com.google.maps.controls.MapTypeControl;
import com.google.maps.controls.ZoomControl;
import com.google.maps.overlays.Marker;
import com.google.maps.overlays.MarkerOptions;
import com.google.maps.styles.FillStyle;
[Bindable]
public static var API_HOST:String = "http://YOUR_DOMAIN";
[Bindable]
public static var API_KEY:String = "YOUR_KEY_GOES_HERE";
public static var DEFAULT_MAP_CENTER:LatLng = new LatLng(-37.814251, 144.963169);
public function onMarkerClick(event:MapMouseEvent):void
{
// fetch clicked marker
var marker:Marker = event.target as Marker;
// update any data displayed in info window if needed
// display info window
marker.openInfoWindow(new InfoWindowOptions({width: infoWindow.width, height: infoWindow.height, drawDefaultFrame: true, customContent: infoWindow}));
}
protected function addMarker(latlng:LatLng, label:String = "", tooltip:String = ""):void
{
// prepare marker options
var opts:MarkerOptions = new MarkerOptions();
opts.fillStyle = new FillStyle({color: 0x00ff00, alpha: .7});
opts.hasShadow = true;
opts.label = label;
opts.tooltip = tooltip;
// build marker
var marker:Marker = new Marker(latlng, opts);
// add marker event listeners
marker.addEventListener(MapMouseEvent.CLICK, onMarkerClick);
// add marker to map
googleMap.addOverlay(marker);
}
protected function googleMap_mapevent_mapreadyHandler(event:MapEvent):void
{
// init map
googleMap.addControl(new ZoomControl());
googleMap.addControl(new MapTypeControl());
googleMap.setCenter(DEFAULT_MAP_CENTER, 14, MapType.NORMAL_MAP_TYPE);
googleMap.enableScrollWheelZoom();
// add marker to map
addMarker(DEFAULT_MAP_CENTER, "M", "Best City Ever");
}
]]>
</fx:Script>
<maps:Map height="100%"
id="googleMap"
width="100%"
sensor="false"
key="{API_KEY}"
url="{API_HOST}"
mapevent_mapready="googleMap_mapevent_mapreadyHandler(event)"/>
Google Info Window 组件 mxml 文件:
<s:Label text="Your info window"
fontSize="20"
fontWeight="bold"
textAlign="center"/>
<mx:DataGrid height="100%"
width="100%">
<mx:columns>
<mx:DataGridColumn headerText="some"/>
<mx:DataGridColumn headerText="info"/>
<mx:DataGridColumn headerText="here"/>
</mx:columns>
</mx:DataGrid>