2012-03-02 5 views
0

이 코드는 저에게 쓰여졌 고 작동하는데 사용되었지만 이제는 여러 개의 경유지가 작동하지 않습니다. 웨이 포인트는 | 51.105166, -1.695971 | 51.105166, -1.695971 |. 웨이 포인트가 하나만 있으면지도가 작동하지만 둘 이상의지도는 전혀 표시되지 않습니다.단일 웨이 포인트 작업, 다중 웨이 포인트가 아닌 아이디어?

아무도 제안 사항이 있습니까?

여기 링크에서 볼 수 있습니다. 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` 

답변

0

배열에서 누락 쉼표 거기에 나타납니다.

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

그 단편 PHP보다는 출력을 전적으로 해당 문자열을 구성하고 필요하지 않은 초기 쉼표를 제거하는 일을

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

하나 개의 방법이 될 것이다. 나는 [] 건설 및 쉼표 제거 사이, 그래서 그냥 위치를 접수 된 의견은 다음이 코드를 수정했습니다

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

(코드 테스트하지)

위치를 출력하는 다른 방법이있다 당신이 가지고있는 것처럼 단편적이지만, 그들 사이에 쉼표가 있어야한다는 요구 사항은 필요없는 것을 단순히 제거하는 것보다 더 복잡하게 만듭니다.

+0

앤드류 감사합니다. 이제 마지막 쉼표를 제거하는 방법을 찾아야합니다. – Endorphin34

+0

내 길은 마지막 쉼표를 추가하지 않습니다. 그것은 쉼표를 먼저 추가 한 다음 제거합니다. 마지막 쉼표는 어디에 있습니까? 어쨌든, 마지막 문자를 제거하는 것은'substr ($ s, 0, strlen ($ s) -1)' –

+0

안녕하세요 앤드류, 당신의 권리, 죄송합니다. – Endorphin34

관련 문제