- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个有 map 的网站。我有一个文本字段,我在其中输入我要前往已设置的特定目的地的城市名称。为了到达这个目的地,我在代码中硬编码了航路点。
所有这一切都很好,我现在有一个按钮,点击它会给我方向(文本格式),当我点击另一个按钮时,我会得到一张显示起点和终点的小 map 。我也想将我的航点添加到这张 map 。
我希望它看起来像这样: http://img209.imageshack.us/img209/1121/whatiwant.png
但我得到的是: http://img687.imageshack.us/img687/1554/whatigetm.png
第二张图片的代码:
window.open("http://maps.google.com/maps?f=d&source=s_d&saddr=" + document.getElementById("fromAddress").value + "&mrad="+waypoints +"&daddr=<%=GetToAddress() %>&hl=sv&geocode=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=ls&sll=37.0625,-95.677068&sspn=47.167389,75.410156&ie=UTF8&z=7&layer=c&pw=2","mywindow");
在我改变之前它是怎样的:
window.open("http://maps.google.com/maps?f=d&source=s_d&saddr=" + document.getElementById("fromAddress").value +"&daddr=<%=GetToAddress() %>&hl=sv&geocode=XXXXXXXXXXXXXXXXXXXXXXX=37.0625,-95.677068&sspn=47.167389,75.410156&ie=UTF8&z=7&layer=c&pw=2","mywindow");
原来的样子: http://img441.imageshack.us/img441/56/originalhd.png
正如您在这里看到的,当我添加“mrad”属性时,我也丢失了方向文本。
我一直在通过以下链接阅读这些属性: http://www.seomoz.org/ugc/everything-you-never-wanted-to-know-about-google-maps-parameters http://mashupguide.net/1.0/html/ch02s05.xhtml What parameters should I use in a Google Maps URL to go to a lat-lon?
但我找不到如何将航点添加到 map 。
我基本上是在寻找如何将我的航路点添加到 map 上,同时又不会丢失最后一张图片中显示的方向文字。
我使用了 mrdad 属性,因为它似乎是最合乎逻辑的选择,因为它说:“mrad:让您指定一个额外的目标地址。”
我是不是误解了什么?也许缺少一些属性?
感谢解答! &如果有任何不清楚的地方,请问!
//Ra3IDeN
编辑:
给我所需路线的代码(当我点击“显示路线”按钮时执行):
function overlayDirections()
{
// reset the map
if(waypoints.length >0){
request = {
origin: null,
destination: null,
waypoints: [],
travelMode: google.maps.DirectionsTravelMode.DRIVING,
optimizeWaypoints:true,
avoidHighways:true,
avoidTolls: true
};
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
origin = null;
destination = null;
waypoints = [];
directionsDisplay.setMap(null);
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(mapdir);
}
$("#directions").text('');
//$("#map_dir").empty();
viaAddress = document.getElementById('viaAddress').value;
fromAddress = document.getElementById("fromAddress").value;
var language = '<%=CurrentPage.LanguageBranch %>';
<asp:PlaceHolder ID="Domestic" runat="server" visible="false">
/*No ferry is needed*/
var noOfPoints = 2;
var waypoints = new Array(noOfPoints);
waypoints[0] = fromAddress;
waypoints[1] = '<%=GetToAddress() %>';
</asp:PlaceHolder>
<asp:PlaceHolder ID="International" runat="server" visible="false">
/*Ferry is required*/
var vpM = fromAddress;
if (viaAddress == 'Rostock')
var wp1 = new google.maps.LatLng(55.357953,13.14894);
else
var wp1 = new google.maps.LatLng(55.37417,13.14731);
addMarker(wp1);
waypoints.push({ location: wp1, stopover: true });
if(viaAddress != 'Rostock')
var wp2 = new google.maps.LatLng(53.93406,10.841789);
else
var wp2 = new google.maps.LatLng(54.152747,12.098023);
addMarker(wp2);
waypoints.push({ location: wp2, stopover: true });
destination =new google.maps.LatLng(<%=GetToAddress() %>);
addMarker(destination);
// set properties to a object
</asp:PlaceHolder>
request = {
origin: vpM,
destination: destination,
waypoints: waypoints,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
optimizeWaypoints:true,
avoidHighways:false,
avoidTolls: true
};
//displays the resutl
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(mapdir);
directionsDisplay.setPanel(document.getElementById("directions"));
// draws the route
gdir.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
}
});
}
使用 via 属性没有给我任何改变,但也许我用错了方式?:
$('#print-directions').click(function(){
if (document.getElementById("fromAddress").value != '')
window.open("http://maps.google.com/maps?f=d&source=s_d&saddr=" + document.getElementById("fromAddress").value + "&daddr=<%=GetToAddress() %>&hl=sv&geocode=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=ls&sll=37.0625,-95.677068&sspn=47.167389,75.410156&ie=UTF8&z=7&layer=c&pw=2","mywindow" + "&via="+ waypoints[1],waypoints[2]);
else
alert('<%=GetKey("HotelPrintNoFromAddress") %>');
return false;
});
最佳答案
终于好了!
Add several addresses programatically into a google map
这是这个问题的基本解决方案,我将在下面描述一些特殊的调整。公平地说,如果没有你的帮助,我永远不会解决这个问题,我会粘贴代码,如果你想复制代码并将其作为解决方案发布,我会接受它。
如果您查看评论,它会显示我花了一些时间来理解上面的解决方案。 Dr.Molle 所做的是将最终目的地设置为航路点 1!
所以我的最终目的地变成了航点 1,航点 1 变成了航点 2,我的最终目的地变成了航点 3。
检查图片以进行说明: http://img6.imageshack.us/img6/8035/resulty.png
A---起点
B--->(daddr) 航点 1
C------> 航路点 2
D--------> Waypoint 3(原来的最终目的地)
我还添加了属性“&dirflg=t”,因为它避免了道路通行费,并为我提供了一条通过渡轮旅行的路线。
代码:
$('#print-directions').click(function(){
if (document.getElementById("fromAddress").value != ''){
window.open("http://maps.google.com/maps?f=d&source=s_d&saddr=" + document.getElementById("fromAddress").value + "&daddr=" + request.waypoints[0].location.toUrlValue() + "+" + "to:" + request.waypoints[1].location.toUrlValue()+ "+" + "to:"+"<%=GetToAddress()%>&hl=sv&geocode=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=ls&sll=37.0625,-95.677068&sspn=47.167389,75.410156&ie=UTF8&z=7&layer=c&pw=2" + "&dirflg=t","mywindow");
}
else
alert('<%=GetKey("HotelPrintNoFromAddress") %>');
return false;
});
要查看其余代码,请在“编辑”下查看我的问题。
非常感谢 Molle 博士,我希望我已经讲清楚了这一点,以便其他人可以从中受益。
关于javascript - 如何在 googlemaps url 中设置航路点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082660/
我是一名优秀的程序员,十分优秀!