我在为我的univer在Google地图上渲染折线时遇到问题。结果应该看起来像折线:http://goo.gl/U18jBJ(Google映射从利兹到伦敦的路线)。
我正在从Google Directions API的每个步骤渲染单独的路径,而不仅仅是获取Google路线图,这样我就可以使用循环来渲染Google Directions API和折线路径中每个步骤的各个路径Rome2Rio Search API结果。
以下php为地图写出了javascript:
<script type="text/javascript">
function initialize() {
var myLatLng = new google.maps.LatLng(53.796490000000006, -1.5473400000000002);
var myOptions = {
zoom: 8,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
var map = new google.maps.Map(document.getElementById("routeMap"), myOptions);
<?php $stopCounter = 0;
foreach($travelData[0]->stops as $stop):
echo 'var stopLatlng'.$stopCounter.' = new google.maps.LatLng('.$stop->location.');';
echo 'var marker'.$stopCounter.' = new google.maps.Marker({
position: stopLatlng'.$stopCounter.',
map: map,
title: \''.$stop->name.'\'
});';
++$stopCounter;
endforeach;
$segementCounter = 0;
foreach($travelData[0]->segments as $segment):
echo 'var routePath'.$segementCounter.' = \''.$segment->path.'\'; ';
echo 'var path'.$segementCounter.' = google.maps.geometry.encoding.decodePath(String(routePath'.$segementCounter.')); ';
echo 'var route'.$segementCounter.' = new google.maps.Polyline({
path: path'.$segementCounter.',
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
}); ';
++$segementCounter;
endforeach;
$segementCounter = 0;
foreach($travelData[0]->segments as $segment):
echo 'route'.$segementCounter.'.setMap(map);';
++$segementCounter;
endforeach;?>
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="routeMap" class="floatLeft">
</div>
从我的研究来看,似乎是导致问题的javascript(可能通过转义字符)但我找不到解决方案。 php输出的代码如下:http://jsfiddle.net/phily245/ebbCX/
答案 0 :(得分:2)
编码path
中的反斜杠必须使用另一个反斜杠进行转义:
http://jsfiddle.net/doktormolle/ebbCX/2/
使用json_encode
应保留原始字符串(假设反斜杠已在原始字符串中转义):
echo 'var routePath'.$segementCounter.' = '.json_encode($segment->path).';';