我们可以在Google地图上绘制自定义路线吗?

时间:2014-04-09 12:44:23

标签: json c#-4.0 google-maps-api-3 geojson directions

我正在探索Google地图API。我有一个Web服务,它返回GeoJSON对象作为响应。我想在Google地图上呈现它。我试过以下API;

directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
    }
  });

这为我们提供了在请求参数中给定开始和结束的GeoJSON。我正在尝试从我的服务中获取GeoJSON响应,而不是Google数据,我正在尝试呈现自己的回复。

我的自定义服务返回的数据格式与Google相同。

Google服务返回的数据格式如下 我构建的对象与Google DirectionsService Response相同。

请查看以下详细信息; https://developers.google.com/maps/documentation/javascript/directions#DirectionsResults

  

“路由”:[{ “边界”:{ “东北”:{ “LAT”:30.2844454, “LNG”: - 97.7040698}, “西南”:{ “LAT”:30.2121885, “LNG”: - 97.7506593 }}, “版权”:“地图   数据©2014 Google“,”leg“:......步骤....}

编辑: 我尝试使用addGeoJson()API作为;

的另一个选项
function loadGeoJsonString(geoString) {
  var geojson = JSON.parse(geoString);
  map.data.addGeoJson(geojson);
  zoom(map);
}

我正在使用的JSON字符串由jsonlint验证。

1 个答案:

答案 0 :(得分:0)

这样的东西?

directionsDisplay = new google.maps.DirectionsRenderer();
var Basingstoke = new google.maps.LatLng(51.2949612, -1.0643864);
var mapOptions = {
  zoom:7,
  center: Basingstoke
}
map = new google.maps.Map(document.getElementById('map'), mapOptions);
directionsDisplay.setMap(map);

var point1 = new google.maps.LatLng(51.2941293,-0.9139252);
var point2 = new google.maps.LatLng(51.3250339,-0.8050919);

var wps = [{ location: point1 }, { location: point2 }];

var org = new google.maps.LatLng ( 51.2949612, -1.0643864);
var dest = new google.maps.LatLng ( 52.3069282, -0.7540226);

var request = {
        origin: org,
        destination: dest,
        waypoints: wps,
        durationInTraffic: true,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
        };


directionsService = new google.maps.DirectionsService();
directionsService.route(request, function(response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                var newRoute = response.routes[0].legs[2].duration.value;
                directionsDisplay.setDirections(response);
                alert ('Travel Time: ' + newRoute + ' seconds');
            }
            else
                alert ('failed to get directions');
        });


}

google.maps.event.addDomListener(window, 'load', initialize);