gMaps.Net LAT / LNG

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    gMaps.Net LAT / LNG

    Guten Morgen,

    ich hab da folgendes Problem mit gMaps.Net villt. könnt Ihr mir ja helfen.

    Ich bin bereits im Besitz von den Jeweiligen Koordinaten (LAT 50.9539861 / LNG 6.6436937) als String aus meiner DB.

    Jetzt lade ich ein neues Fenster und übergebe meine Koordinaten.

    Aber, da die Koordinaten ja als Double angegeben werden sollen, wird mir der Punkt bei den Koordinaten unterschlagen (gelöscht) und es wird mir irgendwo in der Pampa das Meer angezeigt.

    Wenn ich die Koordinaten Hardcode also:

    VB.NET-Quellcode

    1. new PointLatLng(-25.971684,32.589759)


    dann klappt das.

    Irgendwie check ich gerade nicht, warum er das nicht so übernimmt. Weil die Koordinaten sind schon berechnet und stimmen.

    Jemand das Problem auch gehabt oder villt. einen Denkanstoß oder ne Lösung parat?
    Grüße von mir

    P.S. Bitte keine schlauen Kommentare wie (Grundlagen blablabla...) danke :D
    Morgen,

    also z.Z. wird er so umgeändert:

    VB.NET-Quellcode

    1. Public LatValue As String
    2. Public LngValue As String
    3. With myMap
    4. .Position = New PointLatLng(CDbl(LatValue), CDbl(LngValue))
    5. .MapProvider = GMap.NET.MapProviders.OpenStreetMapProvider.Instance
    6. .MinZoom = 3
    7. .MaxZoom = 17
    8. .Zoom = 10
    9. End With
    Grüße von mir

    P.S. Bitte keine schlauen Kommentare wie (Grundlagen blablabla...) danke :D

    ThuCommix schrieb:

    Kannst du mal einen Breakpoint setzen und schauen wie dein Double nach der Konvertierung String -> Double aussieht?



    Original Strings LAT 50.9539861 / LNG 6.643693

    Es sieht dann folgendermaßen aus
    509539861
    6643693
    Grüße von mir

    P.S. Bitte keine schlauen Kommentare wie (Grundlagen blablabla...) danke :D
    Habe fast das gleiche Problem. Allerdings mit den Markern. Meine Koordinaten werden aus einer KML-Datei ausgelesen und ich übergebe Sie anschließend mit Hilfe eines Threadaufrufs. Beim "Anzeigetest" werden mir die Koordinaten richtig angegeben, nur dann hapert es an der konvertierung zu Double.

    Momentan sieht es wie folgt aus (Mit manuellen Koordinaten Eintragungen funktionierts) :

    Quellcode

    1. Private Sub AddMarkers(args As Object)
    2. Dim Objects As Object() = DirectCast(args, Object())
    3. Dim Breite As Double = DirectCast(Objects(0), Double)
    4. Dim Laenge As Double = DirectCast(Objects(1), Double)
    5. Dim MarkersOverlay As New GMapOverlay("markers")
    6. Dim marker As New GMap.NET.WindowsForms.Markers.GMarkerGoogle(New PointLatLng(Breite, Laenge), GMarkerGoogleType.green)
    7. MarkersOverlay.Markers.Add(marker)
    8. myMap.Overlays.Add(MarkersOverlay)
    9. End Sub


    MichaelB schrieb:

    ThuCommix schrieb:

    Kannst du mal einen Breakpoint setzen und schauen wie dein Double nach der Konvertierung String -> Double aussieht?


    Original Strings LAT 50.9539861 / LNG 6.643693

    Es sieht dann folgendermaßen aus
    509539861
    6643693

    Probiere es mal mit ".SetPositionByKeywords".

    Bei mir funktioniert meine Suchfunktion auch mit den Koordinaten (12.34556.. , 34.56789..). Nur leider nicht mit den Markern.

    Quellcode

    1. With myMap
    2. .SetPositionByKeywords(suchtext)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „mr.Z“ ()

    mr.Z schrieb:



    Bei mir funktioniert meine Suchfunktion auch mit den Koordinaten (12.34556.. , 34.56789..). Nur leider nicht mit den Markern.


    ich teste das jetzt mal den .SetPositionByKeywords die koordinate direkt anzugeben. mal sehen obs was bringt. Sonst muss ich auf die adresse zurückgreifen.
    Grüße von mir

    P.S. Bitte keine schlauen Kommentare wie (Grundlagen blablabla...) danke :D
    Okay ich konnte dein Problem reproduzieren. Probiere mal folgendes:

    VB.NET-Quellcode

    1. .Position = New PointLatLng(Convert.ToDouble(LatValue, CultureInfo.InvariantCulture), Convert.ToDouble(LngValue, CultureInfo.InvariantCulture))

    ThuCommix schrieb:

    Okay ich konnte dein Problem reproduzieren. Probiere mal folgendes:

    VB.NET-Quellcode

    1. .Position = New PointLatLng(Convert.ToDouble(LatValue, CultureInfo.InvariantCulture), Convert.ToDouble(LngValue, CultureInfo.InvariantCulture))


    Perfekt... Es funktioniert. DANKE!!!!!!!!

    @mr.Z

    Dien Methode in den .SetPositionByKeywords die Koordinate einzugeben, geht. Aber dann zeigt er die Position ca. 1-2 Km weiter weg an.
    Grüße von mir

    P.S. Bitte keine schlauen Kommentare wie (Grundlagen blablabla...) danke :D
    Hi
    übrigens: CDbl ist bei nicht-primitiven Datentypen i.A. eine Funktion, die nicht zu empfehlen ist.
    Bei Single, Integer, Short, Long, ULong, UShort, Integer und UInteger->Double ist es ok, aber ansonsten würde ich darauf verzichten. Insbesondere bei String würde ich sogar sagen, es sei fast Pflicht darauf zu verzichten und entweder Double.TryParse/Double.Parse oder Convert.ToDouble zu verwenden (wobei ich persönlich Zweiteres nie verwendet habe; die Parse-Methoden bringen die gleiche Funktionalität mit).

    Viele Grüße
    ~blaze~