2016-02-25 4 views
0

Я хочу изменить цвет многоугольника после того, как он уже установлен. но на пользовательском событии.google map api polygon re-color

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

Вот скрипку демо:

http://jsfiddle.net/8xq4gd8y/15/

код

setTimeout (function() { 
    console.log('run'); 
    console.log(directionsRenderer2); // < exist in console log 
     directionsRenderer2.setOptions({ 
      polylineOptions: { 
       strokeColor: 'gray' 
      } 
     }); 
    }, 90); 
+1

вчера был подобный вопрос, может быть, это помогает http://stackoverflow.com/questions/35597394/how-to-change-color-of -route-in-google-map-api-after-route-is-build/35598708 # 35598708 –

+0

Вам следует избегать открытия нескольких вопросов по той же проблеме. Решение, которое я дал вам по вашему предыдущему вопросу, работает, но решение, предложенное ниже, @geocodezip еще проще! – MrUpsidown

+0

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

ответ

3

Похоже, вам нужно установить свойство карта DirectionsRenderer, чтобы заставить его изменить:

setTimeout (function() { 
    console.log('run'); 
    console.log(directionsRenderer2); // < exist in console log 
    directionsRenderer2.setOptions({ 
    polylineOptions: { 
     strokeColor: 'gray' 
    }, 
    map:map 
    }); 
},1000); 

updated fiddle

фрагмент кода:

var map; 
 

 
function renderDirections(result, map) { 
 
    var directionsRenderer1 = new google.maps.DirectionsRenderer({ 
 
    directions: result, 
 
    routeIndex: 3, 
 
    map: map, 
 
    polylineOptions: { 
 
     strokeColor: "red" 
 
    } 
 
    }); 
 
    console.log("routeindex1 = ", directionsRenderer1.getRouteIndex()); 
 

 
    var directionsRenderer2 = new google.maps.DirectionsRenderer({ 
 
    directions: result, 
 
    routeIndex: 1, 
 
    map: map, 
 
    polylineOptions: { 
 
     strokeColor: "blue" 
 
    } 
 
    }); 
 
    console.log("routeindex2 = ", directionsRenderer2.getRouteIndex()); //line 17 
 

 
    setTimeout(function() { 
 
    console.log('run'); 
 
    console.log(directionsRenderer2); // < exist in console log 
 
    directionsRenderer2.setOptions({ 
 
     polylineOptions: { 
 
     strokeColor: 'gray' 
 
     }, 
 
     map: map 
 
    }); 
 
    }, 1000); 
 
} 
 

 
function calculateAndDisplayRoute(origin, destination, directionsService, directionsDisplay, map) { 
 
    directionsService.route({ 
 
    origin: origin, 
 
    destination: destination, 
 
    travelMode: google.maps.TravelMode.DRIVING, 
 
    provideRouteAlternatives: true 
 
    }, function(response, status) { 
 
    if (status === google.maps.DirectionsStatus.OK) { 
 
     renderDirections(response, map); 
 
    } else { 
 
     window.alert('Directions request failed due to ' + status); 
 
    } 
 
    }); 
 
} 
 

 
function initialize() { 
 
    var directionsService = new google.maps.DirectionsService(); 
 
    var directionsDisplay = new google.maps.DirectionsRenderer(); 
 
    var map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(37.4419, -122.1419), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    directionsDisplay.setMap(map); 
 
    calculateAndDisplayRoute(new google.maps.LatLng(51.61793418642200, -0.13678550737318), new google.maps.LatLng(51.15788846699750, -0.16364536053269), directionsService, directionsDisplay, map); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map_canvas"></div>

+0

Всегда учитесь у вас;) Это еще проще, чем решение, которое я дал по его предыдущему вопросу. Ура! – MrUpsidown

+0

@geocodezip Я устанавливаю routeIndex и много разных вещей, но ничего не решаю это ... Ваш ответ решил это:) ... спасибо. – Basit