【发布时间】:2013-03-27 13:55:53
【问题描述】:
我是一名山地车手,我使用Endomondo 和Strava 等程序在Samsung S3 Galaxy 上跟踪我的骑行。关于我的骑行的所有信息都保存在这两个网站上。
我有自己的个人网站,我在其中展示了我住的各个地区的山路。使用 Endomondo 和 Strava 通过GPS 记录的路线数据我已导出到.gpx 文件。我需要 .gpx 文件中的这些数据显示在我自己的个人网站上。所以我开始寻找使用Google Maps API的解决方案,并在不使用外部工具的情况下导入.gpx文件。
我努力寻找答案。我遇到了这篇文章,其中那个家伙使用jQuery 来提取 XML 文件中的数据并将这些数据显示在他的 Google 地图上:
http://www.jacquet80.eu/blog/post/2011/02/Display-GPX-tracks-using-Google-Maps-API
这是在我的 HTML 标记中实现它的方式:
<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>
它有效。但这是正确的方法吗?有没有更好的方法来实现这一点?
【问题讨论】:
标签: javascript jquery html google-maps google-maps-api-3