I have searched high and low, found some great solutions....but for some reason they do not work for me.
Basically on a div hover event I want to draw a polyline based on the coordinates geo coded and retrieved by database. Now, the console appears to display the array elements fine, but I do think this is the problems I can't find. I think I am passing an incorrectly constructed array to create a LatLng
object.
So here is my map:
wgmpmap = new google.maps.Map(document.getElementById("wgmpmap"), mapOptions);
Here is my function:
function highlightRoute(zip,locationId){
jQuery.ajax({
type: "GET",
url: "goGetRoute.php?location_id=" + locationId + "&zip=" +zip,
dataType: "text", //expect html to be returned
success: function(response){
var drivePathCoords = [];
var tmpCoords = response.split("|");
for (i = 0; i < tmpCoords.length; i++) {
var tmpLatLng = tmpCoords[i].split(",");
drivePathCoords.push(new google.maps.LatLng(tmpLatLng[0], tmpLatLng[1]));
}
console.log(drivePathCoords.toString());
var drivePath = new google.maps.Polyline({
path: drivePathCoords,
geodesic: true,
strokeColor: '#008457',
strokeOpacity: 1.0,
strokeWeight: 2
});
drivePath.setMap(wgmpmap);
}//end success function
}); //end ajax call
}
Here is the PHP script that AJAX sends a request to (only interested in the first route):
/////First geocode given zipcode
$tmpZip = json_decode(file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=$_GET[zip]"));
$tmpZipLat = $tmpZip->results[0]->geometry->location->lat;
$tmpZipLng = $tmpZip->results[0]->geometry->location->lng;
$fromLatLng = "$tmpZipLat,$tmpZipLng";
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'pass';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
mysql_select_db("myDB",$conn);
$locMatchesQuery = mysql_query("SELECT location_latitude, location_longitude FROM wp_map_locations WHERE location_id = '$_GET[location_id]'");
if(mysql_num_rows($locMatchesQuery) != 0){
$rowLocation = mysql_fetch_array($locMatchesQuery);
$toLatLng = "$rowLocation[location_latitude],$rowLocation[location_longitude]";
$outString = "";
$tmp = json_decode(file_get_contents("https://maps.googleapis.com/maps/api/directions/json?origin=$fromLatLng&destination=$toLatLng&mode=driving&alternatives=false&units=imperial"));
foreach($tmp->routes[0]->legs[0]->steps as $step){
$tmpLat = $step->start_location->lat;
$tmpLng = $step->start_location->lng;
$outString .= "$tmpLat,$tmpLng|";
}
echo rtrim($outString, "|");
}//End If
else{
}//End Else