Note that there are some explanatory texts on larger screens.

plurals
  1. POJquery Accessing Array Index
    primarykey
    data
    text
    <p>Trying to access index values of an array in a function. The array has 4 records however only index 1 - 3 values is being accessed the last value in the array is not being accessed, only 3 markers are being created. Jquery throws <strong>TypeError: a.eb is undefined</strong> and <strong>TypeError: b is undefined</strong>. Array variable is global_citizens. </p> <p>Error is occurring at <strong>MakeRouteCallBack</strong> function at </p> <pre><code>marker[rNum] = createMarker(legs[i].start_location,"start",legs[i].start_address,ctype); </code></pre> <p><strong>Console Print Results</strong></p> <pre><code>sdfsd sfsdf fsdf sdfsdf john wells sdfdf dfrre 10.58909,-61.13388800000001-10.5089259,-61.3822726,2 10.66753800802045,-61.51776409679476-11.3165044,-60.53128919999999,3 10.67278501519437,-61.51673537546543-10.2690277,-61.3422372,2 10.67107578209723,-61.51689561536466-10.65,-61.4,4 Citizen icon is 2 Citizen icon is 3 Citizen icon is 4 TypeError: a.eb is undefined....... </code></pre> <p><strong>Code:</strong></p> <p><strong>Create Marker</strong></p> <pre><code> function createMarker(latlng, label, html,citizenType) { var contentString = '&lt;b&gt;'+label+'&lt;/b&gt;&lt;br&gt;'+html; console.log('Citizen icon is '+citizenType); //replaces if...then..else...else if. Icon source are placed in an array that corresponds to value of the citizenType. //array starts from 0 . The first value of the citizens type is 2 so array should have a value at the 2 location //so jquery will map the icon to the citizenType based on its matching location in the array var markerSource = [null, 'resources/icons/criminal_new.ico', 'resources/icons/victim_new.ico', 'resources/icons/suspect_new.ico']; var icon = markerSource[citizenType]; var marker = new google.maps.Marker({ position: latlng, map: map, title: label, icon: new google.maps.MarkerImage(icon), zIndex: Math.round(latlng.lat()*-100000)&lt;&lt;5 }); marker.myname = label; google.maps.event.addListener(marker, 'click', function() { infowindow.setContent(contentString); infowindow.open(map,marker); }); return marker; } </code></pre> <p><strong>Set Routes</strong></p> <pre><code> function setRoutes(){ var directionsDisplay = new Array(); for (var i=0; i&lt; global_citizens.length; i++){ var rendererOptions = { map: map, suppressMarkers : true, preserveViewport: true } directionsService = new google.maps.DirectionsService(); var travelMode = google.maps.DirectionsTravelMode.DRIVING; console.log(global_citizens[i].startLat+','+global_citizens[i].startLng+'-'+global_citizens[i].endLat+','+global_citizens[i].endLng+','+global_citizens[i].citizenType); var request = { origin: global_citizens[i].startLat+','+global_citizens[i].startLng, destination: global_citizens[i].endLat+','+global_citizens[i].endLng, travelMode: travelMode }; directionsService.route(request,makeRouteCallback(i,directionsDisplay[i],global_citizens[i].citizenType)); } </code></pre> <p><strong>MakeRouteCallBack</strong></p> <pre><code> function makeRouteCallback(rNum, disp,ctype){ if (polyline[rNum] &amp;&amp; (polyline[rNum].getMap() != null)) { startAnimation(rNum); return; } return function(response, status){ if (status == google.maps.DirectionsStatus.OK){ var bounds = new google.maps.LatLngBounds(); var route = response.routes[0]; startLocation[rNum] = new Object(); endLocation[rNum] = new Object(); polyline[rNum] = new google.maps.Polyline({ path: [], strokeColor: '#FFFF00', strokeWeight: 3 }); poly2[rNum] = new google.maps.Polyline({ path: [], strokeColor: '#FFFF00', strokeWeight: 3 }); // For each route, display summary information. var path = response.routes[0].overview_path; var legs = response.routes[0].legs; disp = new google.maps.DirectionsRenderer(rendererOptions); disp.setMap(map); disp.setDirections(response); //Markers for (i=0;i&lt;legs.length;i++) { if (i == 0) { startLocation[rNum].latlng = legs[i].start_location; startLocation[rNum].address = legs[i].start_address; // marker = google.maps.Marker({map:map,position: startLocation.latlng}); //console.log('(i) The Citizen Type Is : '+ global_citizens[i].citizenType); marker[rNum] = createMarker(legs[i].start_location,"start",legs[i].start_address,ctype); } endLocation[rNum].latlng = legs[i].end_location; endLocation[rNum].address = legs[i].end_address; var steps = legs[i].steps; for (j=0;j&lt;steps.length;j++) { var nextSegment = steps[j].path; var nextSegment = steps[j].path; for (k=0;k&lt;nextSegment.length;k++) { polyline[rNum].getPath().push(nextSegment[k]); //bounds.extend(nextSegment[k]); } } } } polyline[rNum].setMap(map); //map.fitBounds(bounds); startAnimation(rNum); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload