-2

I am currently plotting multiple lines on a map as part of a project.

I have been able to plot multiple polylines on a Google Map with the help of a few tutorials. But, all the polylines are of the same color and I want to them to be in different colors. How do I do it?

JS file

var map, infoWindow;
function initialize() {
  var mapOptions = {
    zoom: 6,
    center: new google.maps.LatLng(24.886436490787712, -70.2685546875),
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };

   var bounds = new google.maps.LatLngBounds();
  var polygons = [];
 var arr = new Array();
  var map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

  var coordinates = {
    "feed1": [
        [ 25.774252,  -80.190262 ],
        [18.466465,-66.118292 ],
        [32.321384, -64.75737],
        [25.774252, -80.190262 ]
    ],
    
     "feed2": [
        [26.774252, -81.190262],
        [ 19.466465, -67.118292 ],
        [33.321384,-65.75737 ],
        [26.774252, -81.190262 ]
    ],
    
     "feed3": [
        [27.774252, -82.190262],
        [ 20.466465, -68.118292 ],
        [34.321384,-66.75737 ],
        [27.774252, -82.190262 ]
    ]
};
   for (var i in coordinates) {
           arr = [];

   for (var j=0; j < coordinates[i].length; j++) {
              arr.push( new google.maps.LatLng(
                    parseFloat(coordinates[i][j][0]),
                    parseFloat(coordinates[i][j][1])
              ));
                
              bounds.extend(arr[arr.length-1])
  
            }
                  
  polygons.push(new google.maps.Polyline({
                path: arr,
                strokeColor: '#FF0000',
                strokeOpacity: 0.8,
                strokeWeight: 2,
                fillColor: '#FF0000',
                fillOpacity: 0.35
            }));
            polygons[polygons.length-1].setMap(map);      
            
            var infowindow = new google.maps.InfoWindow({
  content:"Hello World!"
  });

google.maps.event.addListener(polygons[polygons.length-1], 'click', function(event) {
  infowindow.open(map);
  infowindow.setPosition(event.latLng);
  });     
            
}
 map.fitBounds(bounds);
}


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

HTML file

   <div id="map-canvas"></div>

CSS

  html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px;
      }

The code can also be found on the Fiddle here.

Akhil Kintali
  • 496
  • 2
  • 11
  • 27
  • You are obviously using the same color for every poly**line**. Also, Polygons and Polylines are 2 different things. Why are you creating Polylines with parameters that only exist for Polygons (`fillColor`, `fillOpacity`)? – MrUpsidown Apr 15 '21 at 10:54

1 Answers1

1

Related question: how to draw a google maps waypoint with multi-colored polylines

  1. make an array of colors to apply to the polylines:
  var colors = ["#FF0000", "#00FF00", "#0000FF", "#FFFF00", "#FF00FF", "#00FFFF"];
  1. use that array in the polyline constructor:
polygons.push(new google.maps.Polyline({
      path: arr,
      strokeColor: colors[polygons.length % colors.length],
      strokeOpacity: 0.8,
      strokeWeight: 2,
    }));
    polygons[polygons.length - 1].setMap(map);

Updated fiddle

(or you could include the desired color in the input data)

screenshot of resulting map code snippet:

var map, infoWindow;

function initialize() {
  var mapOptions = {
    zoom: 6,
    center: new google.maps.LatLng(24.886436490787712, -70.2685546875),
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };

  var bounds = new google.maps.LatLngBounds();
  var polygons = [];
  var arr = new Array();
  var map = new google.maps.Map(document.getElementById('map-canvas'),
    mapOptions);
  var colors = ["#FF0000", "#00FF00", "#0000FF", "#FFFF00", "#FF00FF", "#00FFFF"];

  var coordinates = {
    "feed1": [
      [25.774252, -80.190262],
      [18.466465, -66.118292],
      [32.321384, -64.75737],
      [25.774252, -80.190262]
    ],

    "feed2": [
      [26.774252, -81.190262],
      [19.466465, -67.118292],
      [33.321384, -65.75737],
      [26.774252, -81.190262]
    ],

    "feed3": [
      [27.774252, -82.190262],
      [20.466465, -68.118292],
      [34.321384, -66.75737],
      [27.774252, -82.190262]
    ]
  };
  for (var i in coordinates) {
    arr = [];

    for (var j = 0; j < coordinates[i].length; j++) {
      arr.push(new google.maps.LatLng(
        parseFloat(coordinates[i][j][0]),
        parseFloat(coordinates[i][j][1])
      ));

      bounds.extend(arr[arr.length - 1])

    }
    console.log(coordinates.feed2)

    polygons.push(new google.maps.Polyline({
      path: arr,
      strokeColor: colors[polygons.length % colors.length],
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: colors[polygons.length % colors.length],
      fillOpacity: 0.35
    }));
    polygons[polygons.length - 1].setMap(map);

    var infowindow = new google.maps.InfoWindow({
      content: "Hello World!"
    });

    google.maps.event.addListener(polygons[polygons.length - 1], 'click', function(event) {
      infowindow.open(map);
      infowindow.setPosition(event.latLng);
    });

  }
  map.fitBounds(bounds);
}


google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map-canvas {
  height: 100%;
  margin: 0px;
  padding: 0px;
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map-canvas"></div>
geocodezip
  • 158,664
  • 13
  • 220
  • 245