Работает одна путевая точка, нет нескольких путевых точек, есть идеи? - PullRequest
0 голосов
/ 03 марта 2012

Этот код был написан для меня и раньше работал, но теперь несколько путевых точек не работают.Путевые точки хранятся в базе данных как | 51.105166, -1.695971 | 51.105166, -1.695971 | .Только с 1 путевой точкой работают карты, но с более чем одной они вообще не отображаются.

У кого-нибудь есть какие-либо предложения?

Это можно посмотреть по ссылке здесь.http://www.ridersguide.co.uk/2012/Ride_234

var directionDisplay;
var geocoder;
var directionsService = new google.maps.DirectionsService();
var latlng = new google.maps.LatLng(54.559322587438636, -4.1748046875);
function load() {
   geocoder = new google.maps.Geocoder();
   directionsDisplay = new google.maps.DirectionsRenderer();
  var myOptions = {
  zoom: 6,
  mapTypeId: google.maps.MapTypeId.ROADMAP,
 center: latlng,
  mapTypeControl: true,
  mapTypeControlOptions: {
  style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
  position: google.maps.ControlPosition.TOP_RIGHT
  },      

navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.ZOOM_PAN,
position: google.maps.ControlPosition.TOP_LEFT}
  };
    var map = new google.maps.Map(document.getElementById('map'), myOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));

var directionRendererOptions ={
    suppressMarkers: true,
    polylineOptions:{
        strokeColor: "#FF0000",
        strokeOpacity: 1,
        strokeWeight: 3
        }
    };

directionsDisplay.setOptions(directionRendererOptions);


            var start = '<?php echo $start; ?>';
            var end = '<?php echo $end; ?>';
            <?php
            if($via != null){
            echo "var points = [";
            foreach($via as $point){
            if($point != ""){
            echo "{location:";
            echo " '".$point."'";
            echo "}";
            }   
            }
            echo "];\n";
            }
            ?>

            var request = {
                origin:start,
                waypoints: points,
                destination:end,
                travelMode: google.maps.DirectionsTravelMode.DRIVING
            };
            directionsService.route(request, function(response, status) {
                if (status == google.maps.DirectionsStatus.OK) {
                    directionsDisplay.setDirections(response);

                }

            });

        geocoder.geocode( { 'address': start}, function(results, status) {
         var routeStart = new google.maps.Marker({
        map: map, 
        position: results[0].geometry.location,
        icon: './images/motorcycling.png',
        shadow: './images/motorcycling.shadow.png'
    });

});
    geocoder.geocode( { 'address': end}, function(results, status) {
         var routeEnd = new google.maps.Marker({
        map: map, 
        position: results[0].geometry.location,
        icon: './images/motorcyclingend.png',
        shadow: './images/motorcycling.shadow.png'
    });

}); 
<?php`

1 Ответ

0 голосов
/ 03 марта 2012

Похоже, в вашем массиве отсутствует запятая.

var points = [{location: '51.105166,-1.695971'}{location: '51.105166,-1.695971'}];

должно быть

var points = [{location: '51.105166,-1.695971'},{location: '51.105166,-1.695971'}];

Один из способов сделать это - создать эту строку целиком в php, а не выводить ее по частям, а затем удалить начальную запятую, которая вам не нужна. Я отредактировал этот код, следуя полученным комментариям, поэтому создаются только местоположения между [] и удалением запятой:

<?php
            if($via != null){
            $pointstring='';
            foreach($via as $point){
            if($point != ""){
            $pointstring.= ",{location:";
            $pointstring.= " '".$point."'";
            $pointstring.= "}";
            }   
            }
            echo "var points = [".substr($pointstring,1)."];\n";
            }
            ?>

(код не проверен)

Существуют и другие способы вывода местоположений по частям, как и у вас, но требование иметь запятые между ними, а не в конце, делает его более сложным, чем простое удаление ненужного вам места.

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