Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌地图javascript API,用于在地图上显示方向的搜索框_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

谷歌地图javascript API,用于在地图上显示方向的搜索框

谷歌地图javascript API,用于在地图上显示方向的搜索框,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在从事一个web项目,该项目提供从设置地址(jscode中设置的坐标)到用户使用文本搜索框(在另一个div中)设置的地址的方向。我已经成功地设置了搜索框,将地址提供给地图上的标记,但我无法获得从“家”到标记的工作方向 var地理编码器; var映射; 函数initMap(){ var directionsService=新的google.maps.directionsService; var directionsDisplay=新建google.maps.DirectionsRendere

我正在从事一个web项目,该项目提供从设置地址(jscode中设置的坐标)到用户使用文本搜索框(在另一个div中)设置的地址的方向。我已经成功地设置了搜索框,将地址提供给地图上的标记,但我无法获得从“家”到标记的工作方向

var地理编码器;
var映射;
函数initMap(){
var directionsService=新的google.maps.directionsService;
var directionsDisplay=新建google.maps.DirectionsRenderer;
方向显示.setMap(地图);
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(60.124639,19.948736);
变量映射选项={
缩放:14,
中心:拉丁
}
map=new google.maps.map(document.getElementById('map'),mapOptions);
变量输入=/**@type{HTMLInputElement}*/(
document.getElementById(“地址”);
var types=document.getElementById('type-selector');
map.controls[google.maps.ControlPosition.TOP\u LEFT].push(类型);
var autocomplete=new google.maps.places.autocomplete(输入);
autocomplete.bindTo('bounds',map);
var infowindow=new google.maps.infowindow();
var marker=new google.maps.marker({
地图:地图
});
google.maps.event.addListener(自动完成,'place\u changed',函数(){
infowindow.close();
marker.setVisible(假);
var place=autocomplete.getPlace();
如果(!place.geometry){
返回;
}
//如果该地点有几何图形,则将其显示在地图上。
if(place.geometry.viewport){
map.fitBounds(place.geometry.viewport);
}否则{
地图。设置中心(地点。几何。位置);
map.setZoom(15);
}
marker.setIcon(/**@type{google.maps.Icon}*/({
url:place.icon,
大小:新谷歌地图大小(71,71),
来源:新google.maps.Point(0,0),
主播:新google.maps.Point(17,34),
scaledSize:新的google.maps.Size(35,35)
}));
标记器.设置位置(位置.几何.位置);
marker.setVisible(true);
var地址=“”;
if(位置、地址和组件){
地址=[
(place.address_components[0]&&place.address_components[0]。简称| | |“”),
(place.address_components[1]&&place.address_components[1]。简称| | |“”),
(place.address_components[2]&&place.address_components[2]。简称| |“”)
].加入(“”);
}
infowindow.setContent(“”+place.name+”
“+地址); 信息窗口。打开(地图、标记); }); //在单选按钮上设置侦听器以更改位置上的筛选器类型 //自动完成。 功能设置ClickListener(id、类型){ var radioButton=document.getElementById(id); google.maps.event.addDomListener(单选按钮,'click',函数(){ 自动完成。设置类型(类型); }); } setupClickListener('changetype-all',[]); setupClickListener('changetype-Establish',['Establish']); setupClickListener('changetype-geocode',['geocode']); } 函数代码地址(){ var address=document.getElementById('address')。值; geocoder.geocode({'address':address},函数(结果,状态){ if(status==google.maps.GeocoderStatus.OK){ map.setCenter(结果[0].geometry.location); map.setZoom(10); 计算显示路线(方向服务、方向显示); }否则{ 警报('地理编码因以下原因未成功:'+状态); } }); } google.maps.event.addDomListener(窗口'load',initMap); // google.maps.event.addDomListener(窗口“加载”,加载)
html,body,.mapcontainer,#map{
宽度:100%;
身高:100%;
}

您可以在这里尝试,搜索框是谷歌地图自动搜索框,它将显示到点之间的方向

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title> Directions</title>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
    var source, destination;
    var directionsDisplay;
    var directionsService = new google.maps.DirectionsService();
    google.maps.event.addDomListener(window, 'load', function () {
        debugger;
        new google.maps.places.SearchBox(document.getElementById('txtSource'));
        new google.maps.places.SearchBox(document.getElementById('txtDestination'));
        directionsDisplay = new google.maps.DirectionsRenderer({ 'draggable': true });
    });

    function GetRoute() {
        var mumbai = new google.maps.LatLng(18.9750, 72.8258);
        var mapOptions = {
            zoom: 7,
            center: mumbai,
            durationInTraffic: true
        };
        map = new google.maps.Map(document.getElementById('dvMap'), mapOptions);
        directionsDisplay.setMap(map);
        directionsDisplay.setPanel(document.getElementById('dvPanel'));

        //*********DIRECTIONS AND ROUTE**********************//
        source = document.getElementById("txtSource").value;
        destination = document.getElementById("txtDestination").value;

        var request = {
            origin: source,
            destination: destination,
            travelMode: google.maps.TravelMode.DRIVING
        };
        directionsService.route(request, function (response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
            }
        });

        //*********DISTANCE AND DURATION**********************//
        var service = new google.maps.DistanceMatrixService();
        service.getDistanceMatrix({
            origins: [source],
            destinations: [destination],
            travelMode: google.maps.TravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.METRIC,
            avoidHighways: false,
            avoidTolls: false
        }, function (response, status) {
            debugger;
            if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") {
                var distance = response.rows[0].elements[0].distance.text;
                var duration = response.rows[0].elements[0].duration.text;
                var dvDistance = document.getElementById("dvDistance");
                dvDistance.innerHTML = "";
                dvDistance.innerHTML += "Distance: " + distance + "<br />";
                dvDistance.innerHTML += "Duration:" + duration;

            } else {
                alert("Unable to find the distance via road.");
            }
        });
    }
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <table border="0" cellpadding="0" cellspacing="3">
<tr>
    <td colspan="2">
        Source:
        <input type="text" id="txtSource" value="Bandra, Mumbai, India" style="width: 200px" />
        &nbsp; Destination:
        <input type="text" id="txtDestination" value="Andheri, Mumbai, India" style="width: 200px" />
        <br />
        <input type="button" value="Get Route" onclick="GetRoute()" />
        <hr />
    </td>
</tr>
<tr>
    <td colspan="2">
        <div id="dvDistance">
        </div>
    </td>
</tr>
<tr>
    <td>
        <div id="dvMap" style="width: 500px; height: 500px">
        </div>
    </td>
    <td>
        <div id="dvPanel" style="width: 500px; height: 500px">
        </div>
    </td>
</tr>
</table>
    </div>
    </form>
</body>
</html>

方向
var来源、目的地;
var方向显示;
var directionsService=new google.maps.directionsService();
google.maps.event.addDomListener(窗口'load',函数(){
调试器;
新的google.maps.places.SearchBox(document.getElementById('txtSource');
新的google.maps.places.SearchBox(document.getElementById('txtDestination');
directionsDisplay=new google.maps.DirectionsRenderer({'Dragable':true});
});
函数GetRoute(){
var mumbai=new google.maps.LatLng(18.9750,72.8258);
变量映射选项={
缩放:7,
中心:孟买,
持续时间:对
};
map=new google.maps.map(document.getElementById('dvMap'),mapOptions);
方向显示.setMap(地图);
directionsDisplay.setPanel(document.getElementById('dvPanel');
//*********方向和路线**********************//
source=document.getElementById(“txtSource”).value;
destination=document.getElementById(“txtDestination”).value;
var请求={
来源:来源:,
目的地:目的地,
travelMode:google.maps.travelMode.DRIVING
};
路由(请求、功能(响应、状态){
if(status==google.maps.directionstatus.OK){
方向显示。设置方向(响应);
}
});
//*********距离和持续时间**********************//
var service=new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
来源:[来源],
目的地:[目的地],
travelMode:google.maps.travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC,
避免:错误,
避免收费:错误
},功能(响应、状态){
调试器;
if(状态==google.maps.DistanceMatrixStatus.OK&&response.rows[0]。元素[0]。状态!=“零结果”){
var distance=response.rows[0]。元素[0]。distance.text;