Google наносит на карту направления, используя сохраненные результаты - PullRequest
4 голосов
/ 28 июля 2011

Я пытаюсь собрать приложение, в котором я могу запросить службу маршрутов Google, сохранить результаты, чтобы создать кеш, а затем отобразить направления по мере необходимости.

Я могу вернуть данные о направлении и сохранить их в базе данных очень хорошо, и это все хорошо, теперь, когда я начинаю отображать направления на карте, мой JavaScript действительно подводит меня. (strData) - строка, содержащая направления в формате json из базы данных.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="map.aspx.cs" Inherits="panto" %>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Directions Simple</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    var chicago = new google.maps.LatLng(41.850033, -87.6500523);
    var myOptions = {
        zoom: 7,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: chicago
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setDirections(<%= strData %>);
}

function calcRoute() {
    var start = document.getElementById("start").value;
    var end = document.getElementById("end").value;
    var request = {
        origin: start,
        destination: end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            alert(response);
            directionsDisplay.setDirections(response);
        }
    });
}
</script>
</head>
<body onload="initialize()">
<div>

</div>
<div id="map_canvas" style="top:30px;"></div>
</body>
</html>

Консоль ошибок Firefox сообщает об ошибке

Error: g[Xb] is not a function
Source File: http://maps.gstatic.com/intl/en_gb/mapfiles/api-3/5/11/main.js
Line: 109

любая помощь будет принята с благодарностью

Ответы [ 2 ]

9 голосов
/ 13 декабря 2011

Чтобы отобразить маршрут, полученный из веб-службы Google (вместо JavaScript API), мы можем использовать закодированный путь в результате.

  1. добавить геометрическую библиотеку для декодирования пути:

    http://maps.google.com/maps/api/js?libraries=geometry&sensor=false
    
  2. декодировать путь и отобразить ломаную линию

    var rideCoordinates = google.maps.geometry.encoding.decodePath(results.routes[0].overview_polyline.points);       
    var ridePath = new google.maps.Polyline({
        map:            map_object,       
        path:           rideCoordinates,
        strokeColor:    "#FF0000",
        strokeOpacity:  1.0,
        strokeWeight:   3
    });
    
  3. установить границы карты

    var ne = new google.maps.LatLng(results.routes[0].bounds.northeast.lat, route.bounds.northeast.lng);
    var sw = new google.maps.LatLng(results.routes[0].bounds.southwest.lat, route.bounds.southwest.lng);
    map_object.fitBounds(new google.maps.LatLngBounds(sw, ne));
    

HTH

2 голосов
/ 22 августа 2011

При сериализации объекта все методы исчезнут. g [Zb] не является функцией, в действительности означает, что не может найти метод 'getSouthWest' по свойству 'bounds'.

Если вы хотите получить результаты, а затем воссоздать объекты, как это показано: results.routes [0] .bounds = new google.maps.LatLngBound (results.routes [0] .bounds); Затем, по крайней мере, это первое сообщение об ошибке будет исправлено ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...