2013-04-05 51 views
8

Tôi là người đi xe đạp trên núi và tôi theo dõi các chuyến đi của mình trên Samsung S3 Galaxy bằng các chương trình như EndomondoStrava. Mọi thứ liên quan đến chuyến đi của tôi đều được lưu trên 2 trang web này.Cách tốt nhất để nhập tọa độ từ tệp .gpx và hiển thị bằng API Google Maps

Tôi có trang web cá nhân của riêng mình, nơi tôi hiển thị các tuyến đường núi ở các khu vực khác nhau nơi tôi ở. Dữ liệu tuyến đường được ghi lại qua GPS bằng Endomondo và Strava I đã xuất sang tệp .gpx. Tôi cần dữ liệu này trong tệp .gpx để hiển thị trên trang web cá nhân của riêng tôi. Vì vậy, tôi bắt đầu tìm kiếm giải pháp bằng cách sử dụng Google Maps API và nhập tệp .gpx mà không cần sử dụng công cụ bên ngoài.

Tôi đã cố gắng tìm câu trả lời. Tôi đã xem qua bài này, nơi các chàng trai sử dụng jQuery để trích xuất các dữ liệu trong file XML và hiển thị dữ liệu này trên bản đồ Google của mình: http://www.jacquet80.eu/blog/post/2011/02/Display-GPX-tracks-using-Google-Maps-API

Đây là cách thực hiện nó vào đánh dấu HTML của tôi:

<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> 

Nó hoạt động. Nhưng đây có phải là cách chính xác để làm điều đó không? Có cách nào tốt hơn để thực hiện điều này không?

Trả lời

2

Nếu bạn sử dụng cơ sở dữ liệu PostgreSQL, tôi khuyên bạn nên sử dụng PostGIS và nhập bản ghi của bạn vào cơ sở dữ liệu. Sau đó, bạn có thể dễ dàng tạo các tệp kml (ST_asKml) và hiển thị chúng trên Google Map. Nếu gpx của bạn là rất lớn, bạn có thể sử dụng ST_Simplify trên truy vấn cơ sở dữ liệu để trang được tải nhanh hơn và bạn vẫn có tuyến đường chi tiết đầy đủ trong cơ sở dữ liệu của mình.

Bạn cũng có rất nhiều khả năng:

  • tìm kiếm cưỡi trong một khu vực cụ thể
  • biện pháp tổng khoảng cách trong một tháng
  • và nhiều hơn nữa
+0

Tôi đang thực sự sử dụng SQL Server. Tại sao bạn đề xuất rằng tôi nên sử dụng tệp KML nếu tôi đã có chúng dưới dạng .gpx? –

+0

Khi tạo kml từ cơ sở dữ liệu, bạn có thể dễ dàng hiển thị nhiều tuyến đường hơn trên cùng một bản đồ. Nó cũng dễ dàng hơn để tạo kiểu cho tuyến bằng cách sử dụng kiểu kml. –

+2

Kml là "cách google" để lưu trữ và hiển thị dữ liệu địa lý và cả GMaps và GEarth đều có hỗ trợ tốt cho việc nhập và xuất kml thay vì gpx. Ngoài ra, rất tự nhiên để chuyển đổi giữa GPX và KML bằng các công cụ như, GPSBabel hoặc thậm chí là hack bằng ngôn ngữ yêu thích của bạn (python, php, v.v.) – heltonbiker

Các vấn đề liên quan