Hi Snoopy,
Ich hätte da noch ein paar Vorschläge:
1) Irgendwie will die IconSource des Layers bei mir nicht richtig. Ich habe es mit einem lokalen Pfad und der internen Ressourcen-Referenz a la pack://application:,,,/WPFOSMMapDemo;component/Images/icon_name.png versucht, aber leider nichts.
2) Es wäre schön, wenn die Welt ein Kreis wäre. Wenn man zur Datumsgrenze scrollt, geht es leider nicht wieder von vorn los. Galileo wäre erschüttert. ^^
3) Wenn man die Maus gedrückt hält, kurz außerhalb des Controls kommt, die Maus loslässt und danach schnell wieder hinein, kann man die Karte scrollen, obwohl nicht mehr gedrückt wurde. Das Control merkt also nicht, dass außerhalb die Maus losgelassen wurde. Bei längerem Draußenbleiben funktioniert es.
4) Du könntest den YouTube Support in deiner App noch etwas verbessern. YouTube-Videos haben oft eine Lokalisierung, also wo das Video entstanden ist. Diese Infos kann man mit der YouTube API ganz einfach abfragen und in den Marker eintragen. Wäre schön, wenn du das einbauen könntest (eigenständige AutoFill-Sub oder AutoFill-Property für Map-Refresh). Leider fehlt beim YouTube-Popup auch die Description.
Wo wir schon beim Popup sind...Da dies ja ein WPF-Control ist, fehlt mir hier eine Template-Eigenschaft. Nichts gegen deine Popups, aber ich würde schon gerne meinen eigenen Stil einbringen. Ein Problem für mich wäre dabei allerdings die Integration des YouTube-Videos. Solltest du die Template-Eigenschaft einführen, wäre ein YouTube-HostControl (was man dann in das Template einbaut) nicht schlecht, um das Ganze etwas zu vereinfachen.
Hier mal mein Code zum Befüllen des Markers:
Private Sub FillYtMarker(m As WpfOSMMap.Marker)
If m.YouTubeVideoID <> String.Empty And m.PopupTyp = _
WpfOSMMap.PopupTypEnum.YouTube Then
Dim xDoc As XDocument = XDocument.Load(String.Format("{0}/{1}", _
"http://gdata.youtube.com/feeds/api/videos", m.YouTubeVideoID))
Dim title = xDoc.Root.<title>.Value
Dim content = xDoc.Root.<content>.Value
Dim author = xDoc.Root.<author>.<name>.Value
m.PopupHeader = String.Format("{0} @ {1}", title, author)
m.PopupDescription = content
Try
Dim nsGeorss = xDoc.Root.GetNamespaceOfPrefix("georss")
Dim nsGml = xDoc.Root.GetNamespaceOfPrefix("gml")
Dim longLat = xDoc.Root.Element(XName.Get("where", _
nsGeorss.NamespaceName)).Element(XName.Get("Point", _
nsGml.NamespaceName)).Element(XName.Get("pos", _
nsGml.NamespaceName)).Value().Split(" "c)
Dim latitude = longLat(0)
Dim longitude = longLat(1)
m.Longitude = Decimal.Parse(longitude, New _
Globalization.CultureInfo("en-US"))
m.Latitude = Decimal.Parse(latitude, New _
Globalization.CultureInfo("en-US"))
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End If
End Sub Edit:
5) Der Layer-Switcher hat einen geringeren Z-Index als das YouTube-Video, aber einen größeren als das Popup.
Maas
Beitrag wurde zuletzt am 20.07.11 um 07:42:13 editiert. |