2016-06-18 10 views
0

Ich habe einige Anmerkungen auf meiner Titan Karte.Zweiter Klick auf Titanium Karte Annotation funktioniert nicht

Wenn ich auf die Anmerkung A klicke, wird eine Ansicht angezeigt. Wenn ich auf die Ansicht klicke, verschwindet sie wieder.

Das Problem ist, wenn ich versuche, erneut auf die gleiche Anmerkung zu klicken, um die Ansicht erneut anzuzeigen. Das Klickereignis in der Kartenansicht wird nicht ausgelöst. Es funktioniert nur, wenn ich auf eine andere Annotation klicke, nachdem ich die Ansicht ausgeblendet habe, die auf dem Klick der Annotation A gezeigt wurde.

so handhabe ich Klicken auf die Annotationen. Beim ersten Klick wird gefeuert, beim zweiten Klick auf die gleiche Anmerkung passiert nichts.

mapview.addEventListener('click', function(evt) { 
    console.log("clicked"); 
    if (evt.clicksource == 'pin') { 
     viewTest.show(); 
     viewData.show(); 
     console.log("clicked, id: " + evt.annotation.id); 
    } 
}); 

das ist, wie ich meine Ansicht, das ist verstecken wurde auf dem Klicken der Anmerkung hinzugefügt:

viewTransparente.addEventListener('click', function() { 
    viewTest.hide(); 
    viewData.hide(); 
}); 

In android i funktioniert. Das einzige Problem ist auf IOS. Das Klickereignis wird nicht beim zweiten Klick auf dieselbe Annotation ausgelöst.

Antwort

1

Sie werden den ausgewählten Zustand aus der Anmerkung entfernen müssen, wenn Sie auf Ihrer Ansicht „viewTransparente

genannt klicken Wenn Sie alle Eigenschaften einzuloggen, die ich unter der Anmerkung gemacht haben, können Sie sehen, dass nichts derzeit selected genannt ausgesetzt:

[DEBUG] :  horizontalWrap, 
[DEBUG] :  visible, 
[DEBUG] :  longitude, 
[DEBUG] :  id, 
[DEBUG] :  animate, 
[DEBUG] :  latitude, 
[DEBUG] :  image, 
[DEBUG] :  canShowCallout, 
[DEBUG] :  annotationTitle 

eine Arbeit um für diese ist die Anmerkungen auf der mapView neu einstellen, wenn Ihre Ansicht geklickt wird, obwohl dies eine sehr teure Operation auf die Anzahl der Pins abhängig ist, dass Sie ausgewählt haben.

mapView.annotations = [yourAnnotations]; 

Das wird alle Ihre alten Anmerkungen entfernen und sie mit den neuen ersetzen, und dann wird das Click-Ereignis wieder arbeiten, weil es den ausgewählten Zustand zurückgesetzt haben.

Ich habe etwas ähnliches implementiert, aber ich habe in Clustering für die Pins in der MapView aktiviert zu stoppen Rendern zu viele Pins und nur das Rendern, was ich brauche statt der alle Anmerkungen.