2013-04-05 9 views
8

Jestem rowerzystą górskim i śledzę moje przejażdżki na moim Samsung S3 Galaxy przy użyciu programów takich jak Endomondo i Strava. Wszystko, co dotyczy mojej jazdy, jest zapisane na tych 2 stronach.Najlepszy sposób importowania współrzędnych z pliku .gpx i wyświetlania przy użyciu interfejsu API Google Maps

Mam własną stronę internetową, na której wyświetlam trasy górskie w różnych miejscach, w których się zatrzymuję. Dane trasy zarejestrowane za pomocą GPS przy użyciu Endomondo i Strava I zostały wyeksportowane do pliku .gpx. Potrzebuję tych danych w pliku .gpx do wyświetlania na mojej własnej stronie internetowej. Tak więc zacząłem szukać rozwiązania, używając Google Maps API i importując plik .gpx bez użycia zewnętrznego narzędzia.

Próbowałem znaleźć odpowiedź. Natknąłem się na to stanowisko, gdzie facet używa jQuery wyodrębnić dane w pliku XML i wyświetlić te dane na swojej mapie Google: http://www.jacquet80.eu/blog/post/2011/02/Display-GPX-tracks-using-Google-Maps-API

ten sposób wdrożone do mojego HTML znaczników:

<script> 
    function initialize() { 
      var route1Latlng = new google.maps.LatLng(-33.7610590,18.9616790); 
      var mapOptions = { 
       center: route1Latlng, 
       zoom: 11, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

      $.ajax({ 
       type: "GET", 
       url: "gpx/my_route.gpx", 
       dataType: "xml", 
       success: function (xml) { 
        var points = []; 
        var bounds = new google.maps.LatLngBounds(); 
        $(xml).find("trkpt").each(function() { 
         var lat = $(this).attr("lat"); 
         var lon = $(this).attr("lon"); 
         var p = new google.maps.LatLng(lat, lon); 
         points.push(p); 
         bounds.extend(p); 
        }); 
        var poly = new google.maps.Polyline({ 
         // use your own style here 
         path: points, 
         strokeColor: "#FF00AA", 
         strokeOpacity: .7, 
         strokeWeight: 4 
        }); 
        poly.setMap(map); 
        // fit bounds to track 
        map.fitBounds(bounds); 
       } 
      }); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

To działa. Ale czy to jest właściwy sposób na zrobienie tego? Czy istnieje lepszy sposób na wdrożenie tego?

Odpowiedz

2

Jeśli korzystasz z bazy danych PostgreSQL, proponuję użyć PostGIS i zaimportować swoje rekordy do bazy danych. Następnie możesz łatwo wygenerować pliki kml (ST_asKml) i wyświetlić je na Google Map. Jeśli twój gpx jest ogromny, możesz użyć ST_Simplify w zapytaniu do bazy danych, aby strona była ładowana szybciej i nadal masz pełną szczegółową trasę w bazie danych.

Trzeba również wiele możliwości:

  • poszukiwania przejażdżki w określonym obszarze
  • miarą całkowita odległość w miesiącu
  • i wiele więcej
+0

Jestem rzeczywiście przy SQL Server. Dlaczego sugerujesz, że używam plików KML, jeśli już je mam jako .gpx? –

+0

Podczas generowania kml z bazy danych, można łatwo wyświetlić więcej tras na tej samej mapie. Łatwiej jest również stylizować trasę za pomocą stylów kml. –

+2

Kml to "metoda Google" do przechowywania i wyświetlania danych geograficznych, a zarówno GMaps, jak i GEarth mają dobre wsparcie dla importowania i eksportowania kml zamiast gpx. Ponadto konwersja pomiędzy GPX i KML jest bardzo naturalna przy użyciu takich narzędzi, jak na przykład GPSBabel, a nawet hackowanie w ulubionym języku (python, php itp.). – heltonbiker

Powiązane problemy