GVKun编程网logo

javascript – 如何在googlemaps网址中设置航点(google map怎么导航)

25

本篇文章给大家谈谈javascript–如何在googlemaps网址中设置航点,以及googlemap怎么导航的知识点,同时本文还将给你拓展googlemapsjavascriptapiv3如何删除

本篇文章给大家谈谈javascript – 如何在googlemaps网址中设置航点,以及google map怎么导航的知识点,同时本文还将给你拓展google maps javascript api v3 如何删除自定义控件、Google Maps JavaScript API v3删除标记、Google.maps.Map Javascript API V3与jquery兼容、googlemap 之 javascript实现方法_javascript技巧等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

javascript – 如何在googlemaps网址中设置航点(google map怎么导航)

javascript – 如何在googlemaps网址中设置航点(google 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?

但我无法找到如何将我的航点添加到地图.

我基本上在寻找如何将我的航点添加到地图中,同时不会丢失我在上一张图片中显示的方向文字.

我使用了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公平地说,如果没有你的帮助我永远不会解决这个问题,我会粘贴代码,如果你想复制代码并将其作为解决方案发布,我会接受它.

如果你查看评论,它会显示我花了一些时间来解决上面的解决方案. Dr.Molle所做的是他将最终目的地设定为航路点1!

所以最终目的地我的情况是航点1,航点1成为航点2,我的最终目的地成为航点3.

查看图片以获得澄清:
http://img6.imageshack.us/img6/8035/resulty.png

A — StartPoint可以

B —>(daddr)Waypoint 1

Ç——-&GT航点2

d ——-&GT 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;
    });

要查看其余代码,请在EDIT下查看我的问题.

非常感谢Dr.Molle,我希望我能够清楚地说明这一点,以便其他人可以从中受益.

google maps javascript api v3 如何删除自定义控件

google maps javascript api v3 如何删除自定义控件

                var location_infos = document.getElementById("location_infos");
        location_infos.index = 1;
        if(location_infos.style.display == "none"){
        location_infos.style.display = "block";
                map.controls[google.maps.ControlPosition.RIGHT_TOP].push(location_infos);
        }else{
        location_infos.style.display = "none";
        //clearOverLays();
        map.controls[google.maps.ControlPosition.RIGHT_TOP].removeAt(1);
        }

Google Maps JavaScript API v3删除标记

Google Maps JavaScript API v3删除标记

我看了很多“相似”的问题,没有一个解决方案/答案似乎适合我,所以我们走了:我正在生成一个简单的谷歌地图,上面有一个标记“onload”我有一个菜单列表a有点像这样

<ul>
<liid="beaches">Item</li>
<liid="towns">Item</li>
<ul>

点击时使用这些数组来标记填充地图

jQuery –

$(".toggle").click(function(){
setMarkers(map,$(this).attr('id'));
});

var beaches = [
['Beach 1',38.285827, 20.611038, 4],
['Beach 2', 38.304958,20.604515, 5],
['Beach 3',38.301691,20.597649, 3]
];

var towns = [
['Town 1',38.343003, 20.535679, 4],
['Town 2',38.339334,20.545807, 5]
];

我的人口函数如下所示:

function setMarkers(map, locations) {
for (var i = 0; i < locations.length; i++) {
var newmarker = locations[i];
var myLatLng = new google.maps.LatLng(newmarker[1], newmarker[2]);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: newmarker[0],
zIndex: newmarker[3]
});
}

但我需要/想要做的是在添加新标记之前先清除所有标记.建议请谢谢

解决方法:

您需要存储标记,并为要从地图中删除的每个标记调用setMap(null).

你可以尝试这样的事情:

var setMarkers = (function() {
    var oldMarkers = null;
    return function(map, locations){
        //Clearing markers, if they exist
        if(oldMarkers && oldMarkers.length !== 0){
            for(var i = 0; i < oldMarkers.length; ++i){
                oldMarkers[i].setMap(null);
            }
        }
        //Adding new markers
        oldMarkers = [];
        for (var i = 0; i < locations.length; i++) {
            var newmarker = locations[i];
            var myLatLng = new google.maps.LatLng(newmarker[1], newmarker[2]);
            var marker = new google.maps.Marker({
               position: myLatLng,
               map: map,
               title: newmarker[0],
               zIndex: newmarker[3]
            });
            oldMarkers.push( marker );
        }
   };
})();

Google.maps.Map Javascript API V3与jquery兼容

Google.maps.Map Javascript API V3与jquery兼容

我试图通过在id =“google_map”div上添加地图来弄清楚为什么会这样做

map = new google.maps.Map(document.getElementById("google_map"), googleMapOptions);

但这不会奏效

var our_map = $("#google_map");
map = new google.maps.Map(our_map, googleMapOptions); 

我在firebug上遇到此控制台错误

TypeError: Argument 1 of Window.getComputedStyle does not implement interface Element.


...(a,b,c){c=c&&1==b;Jt.H?Yn(a[w],c?"":b):(b="alpha(opacity="+Jd(100*b)+")",rn(a[w]...

解决方法:

Map构造函数期望Node作为第一个参数:Map(mapDiv:Node,opts?:MapOptions).

代替

map = new google.maps.Map(our_map, googleMapOptions); 

你必须使用

map = new google.maps.Map(our_map[0], googleMapOptions); 

googlemap 之 javascript实现方法_javascript技巧

googlemap 之 javascript实现方法_javascript技巧

这是一个很典型的一个background-position-x的应用。技术含量并不高,但是思想还是值得思考的,证明了DHTML方面有很多东西可以变通的。用背景用map,如果做得更复杂一些,用ajax动态的载入图片的背景,也是一个小型的map了。我不打算在此项深究,因为脚本的速度和效率是有瓶颈的。

预备知识:
background-position-x ------------- 背景图的X坐标。
background-position-y ------------- 背景图的Y坐标。

event.clientX ------------------------鼠标的X坐标。
event.clientY ------------------------鼠标的Y坐标。

JSON --------------------------------- 现在似乎很流行这个词,自从ajax in action出来后,更火了一把,从广义的角色上讲就是javascript的关联数组。JSON(JavaScript Object Notation) 也就是类似这样 var o={name:"never-online",web:"http://www.never-online.net",blog:"http://blog.never-online.net"}从而可以这样用o.name, o.web或者o[''name''],o[''web'']这样的数组关系形式。

问题解决思路:
这个map的主要难点在于,坐标的准确性,也就是鼠标移动时得到background-position的坐标方向。
如果解决掉上面的这个问题,成功了一大半。

我采用惯用的方法
坐标=用鼠标移动后的坐标-原始我们存进的坐标。

原始坐标得到方法为:neverOnlineMap._wrapper.X = event.clientX-parseInt(x.backgroundPositionX);
即用鼠标当前位置-图像背景的X坐标
图片背景坐标=鼠标位置-原始位置
Y坐标和X坐标类似,不再重复。neverOnlineMap._wrapper.Y = event.clientY-parseInt(x.backgroundPositionY);

源码如下:


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

今天关于javascript – 如何在googlemaps网址中设置航点google map怎么导航的介绍到此结束,谢谢您的阅读,有关google maps javascript api v3 如何删除自定义控件、Google Maps JavaScript API v3删除标记、Google.maps.Map Javascript API V3与jquery兼容、googlemap 之 javascript实现方法_javascript技巧等更多相关知识的信息可以在本站进行查询。

本文标签: