2016-03-30 3 views
0

Versuchen, einen benutzerdefinierten Pin, den ich meiner Karte hinzufügen, so dass ich mehr Optionen als nur die Standard-Pins erstellen kann also füge ich einige Optionen hinzu, wenn ich den Pin benutze. Ich habe mit etwas angefangen, aber ich kann nicht die Saiten erreichen, die ich geschaffen habe.Wie kann ich einen custompin erstellen, wo ich weitere Optionen neben dem Pin.Label, Pin.Adress usw. hinzufügen kann

public Pin MyCustomPinHolder 
    { 

     get { return MyCustomPinHolder; } 
     set { 

     string info1; 
     string info2; 

     ;} 

    } 

So kann ich später den Stift wie folgt verwenden:

MyCustomPinHolder.Label = ""; 
    MyCustomPinHolder.Address = ""; 

Und neben den standardpin-Features wie Label-+ Adresse Ich möchte auch die Saiten verwenden, die ich erstellt, aber jetzt kann ich nicht finden sie (Beispiel unten):

MyCustomPinHolder.info1 = ""; 
    MyCustomPinHolder.info2 = ""; 
+0

Wenn Sie weitere Daten auf der Karte machen möchten selbst, würden Sie einen benutzerdefinierten Renderer oder ein Paket wie TKCustomMap – Jason

+0

Ich möchte nur darauf schreiben verwenden, um Push Infos zu einer neuen Seite. also nicht die tatsächlichen Infos zum Pin oder so. ist es möglich oder benötige ich auch einen Renderer? – Yannick

Antwort

1
public class MyCustomPinHolder 
{ 

    public MyCustomPinHolder() { 
     MapPin = new Pin(); 
    } 

    public string info1 { get; set; } 
    public string info2 { get; set; } 
    public Pin MapPin { get; set; } 
} 

es zu benutzen:

var myPin = new MyCustomPinHolder(); 
myPin.info1 = "foo"; 
myPin.info2 = "bar"; 
myPin.MapPin.Label = "blah"; 
myPin.MapPin.Address = "blah"; 
myPin.MapPin.Position = new Position(lat, long); 

myMap.Pins.Add(myPin.MapPin); 

im Click-Handler

public void Pin_Clicked(object sender, EventArgs e) { 

    Pin p = (Pin) sender; 

    // we need to find the custom pin holder that contains this pin 
    // assume pins is a List<MyCustomPinHolder> with all of your pins in it 
    var holder = pins.First(x => x.MapPin == p); 

    // pass the entire MyCustomPinHolder object to the next page 
    Navigation.PushModalAsync (new DetailPage(holder)); 

    } 
+0

und wie man es auf die nächste Seite sendet? wenn ich jetzt auf den Pin klicke, bekommt die nächste Seite nicht die Information: 'Pin pin = (Pin) s; \t \t \t var myPin = neu MyCustomPinHolder(); \t \t \t Navigation.PushModalAsync (neue Detailpage (myPin.MapPin.Address, myPin.MapPin.Label, myPin.info1)); ' – Yannick

+0

Fehler:' var Halter = myPins.First (x => == x.MapPin p); 'Sequenz enthält kein passendes Element – Yannick

+0

Verdammt, ich habe eine Menge Code, den ich mit dieser Lösung anpassen muss. Vielleicht ist es besser, stattdessen eine Lösung mit einer objectID zu erstellen? was denkst du? Ich gebe dir natürlich die Antwort auf diese Lösung. – Yannick

Verwandte Themen