2012-05-17 57 views
1

我的WPF應用程序使用Flash API用於谷歌地圖。一切正常,但我需要在用戶點擊氣球時顯示一些自定義細節。標記Google地圖API的顯示標籤

的ActionScript代碼如下:

var map:Map = new Map(); 
map.key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
map.sensor = "true"; 
var marker : Marker; 
map.setSize(new Point(stage.stageWidth, stage.stageHeight)); 
map.addEventListener(MapEvent.MAP_READY, onMapReady); 
this.addChild(map); 

var CustN:String; 

function onMapReady(event:Event):void 
{ 
    var centerLL : LatLng = new LatLng(38.05,-77.036562); 
    map.setCenter(centerLL, 10, MapType.NORMAL_MAP_TYPE); 
    map.addControl(new ZoomControl()); 
    map.addControl(new PositionControl()); 
    map.addControl(new MapTypeControl()); 
    marker = new Marker(centerLL); 
    map.addOverlay(marker); 
    ExternalInterface.addCallback("Search",onSearch); 
} 

function onSearch(lat:Number, lon:Number, CustName:String):void 
{ 
    CustN = CustName; 
    var centerLL : LatLng = new LatLng(lat,lon); 
    map.setCenter(centerLL, 10, MapType.NORMAL_MAP_TYPE); 
    marker = new Marker(centerLL); 
    marker.addEventListener(MapMouseEvent.CLICK, onMapClick); 
    map.addOverlay(marker); 
} 

function onMapClick(event:MapMouseEvent):void 
{ 
    map.openInfoWindow(event.latLng, new InfoWindowOptions({title: "Click Event", content: CustN})); 
} 

我稱之爲onSearch功能從下面我的C#代碼:

foreach (var rec in LstCoOrdinates) 
     { 
      XElement call = new XElement("invoke", new XAttribute("name", "Search"), new XAttribute("returntype", "xml"), new XElement("arguments", new XElement("number", rec.latitude)), 
       new XElement("arguments", new XElement("number", rec.longitude)), new XElement("arguments", new XElement("string", rec.name))); 
      axFlash.CallFunction(call.ToString(SaveOptions.DisableFormatting)); 
     } 

我需要顯示點擊

回答

0
對應氣球名稱

您可以在g標記中指定DisplayObject .icon屬性。並在點擊時改變其可見性。 預定義標籤或將其設置爲點擊任何你需要的。

marker = new Marker(centerLL); 
marker.icon = new LabelSprite(); 
marker.icon.visible = false; 
marker.addEventListener(MapMouseEvent.CLICK, onMapClick); 
map.addOverlay(marker); 

function onMapClick(e:Event):void 
{ 
    if(selectedMarker) 
    selectedMarker.icon.visible = false; 

    selectedMarker = e.currentTarget as Marker; 
    selectedMarker.icon.visible = true; 
} 


public class LabelSprite extends Sprite 
{ 
    private var labelTextField:TextField; 

    public function LabelSprite() 
    { 
    labelTextField = new TextField(); 
    addChild(labelTextField); 
    } 

    public function set labelText(value:String):void 
    { 
    labelTextField.text = value; 
    } 
}