2012-05-17 4 views
1

В моем приложении WPF используется API Flash для карты google. Все работает отлично, за исключением того, что мне нужно показать некоторые пользовательские данные, когда пользователь нажимает на воздушные шары.Показать метки для маркера Google Map 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

вы можете указать свойство DisplayObject .icon в своем g Marker. и измените его видимость при нажатии. Предопределите ярлык или установите его, щелкнув все, что вам нужно.

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; 
    } 
} 
Смежные вопросы