Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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 如何使用google autocomplete和google traffic layer map api_Javascript_Php_Google Maps_Google Maps Api 3_Autocomplete - Fatal编程技术网

Javascript 如何使用google autocomplete和google traffic layer map api

Javascript 如何使用google autocomplete和google traffic layer map api,javascript,php,google-maps,google-maps-api-3,autocomplete,Javascript,Php,Google Maps,Google Maps Api 3,Autocomplete,我正在尝试使用谷歌自动完成地点和交通层地图。 我正在使用api键包括libraries=places和callback=initMap,但自动完成不起作用。如果我删除callback=initMap,那么autocomplete正在工作,但是callback=initMap autocomplete不工作,只显示流量层映射。先谢谢你 <style> #map { height: 500px; } </style> <form action="" meth

我正在尝试使用谷歌自动完成地点和交通层地图。 我正在使用api键包括libraries=placescallback=initMap,但自动完成不起作用。如果我删除callback=initMap,那么autocomplete正在工作,但是callback=initMap autocomplete不工作,只显示流量层映射。先谢谢你

<style>
#map {
    height: 500px;
}
</style>


<form action="" method="post">
    <input type="text" name="location" onFocus="initialize()" id="autocomplete">
    <input type="submit" name="submit" >
</form>


<div id="map"></div><!--Traffic Map-->

<?php
$lat = '';
$long = '';
if(isset($_POST['submit']))
{
    $address = urlencode($_POST['location']);
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address=$address";
    $geocode = file_get_contents($url);
    $output = json_decode($geocode);
    if ($output->status == "OK") 
    {
        $lat = $output->results[0]->geometry->location->lat;
        $long = $output->results[0]->geometry->location->lng;
    }
    else{
        echo $output->status;
    }
}
?>


<script><!--AutoComplete-->
    var autocomplete;
    function initialize() {
      autocomplete = new google.maps.places.Autocomplete(
         (document.getElementById('autocomplete')),
          { types: ['geocode'] });
      google.maps.event.addListener(autocomplete, 'place_changed', function() {
      });
    }
</script>


<script><!--TrafficLayer-->
function initMap() 
{
 var mapOptions = {
    center: new google.maps.LatLng(<?php echo $lat;  ?>, <?php echo $long; ?>),
    zoom: 12,
    scrollwheel: true,
    draggable: true,
    panControl: true,
    zoomControl: true,
    mapTypeControl: true,
    scaleControl: true,
    streetViewControl: true,
    overviewMapControl: true,
    rotateControl: true,
  };

var map = new google.maps.Map(document.getElementById('map'),mapOptions);

var trafficLayer = new google.maps.TrafficLayer();
        trafficLayer.setMap(map);

var marker = new google.maps.Marker({
        position:{lat: <?php echo $lat;  ?>, lng: <?php echo $long; ?>},
        map:map,
        animation: google.maps.Animation.DROP,
    }); 
}
</script>

<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
<!--<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>-->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=MY_API_KEY&libraries=places&callback=initMap"></script>

#地图{
高度:500px;
}
var自动完成;
函数初始化(){
autocomplete=new google.maps.places.autocomplete(
(document.getElementById('autocomplete')),
{类型:['geocode']});
google.maps.event.addListener(自动完成,'place\u changed',函数(){
});
}
函数initMap()
{
变量映射选项={
中心:新google.maps.LatLng(,),
缩放:12,
滚轮:对,
真的,
泛控制:对,
动物控制:对,
mapTypeControl:true,
scaleControl:对,
街景控制:对,
overviewMapControl:true,
旋转控制:对,
};
var map=new google.maps.map(document.getElementById('map'),mapOptions);
var trafficLayer=new google.maps.trafficLayer();
trafficLayer.setMap(地图);
var marker=new google.maps.marker({
位置:{lat:,lng:},
地图:地图,
动画:google.maps.animation.DROP,
}); 
}

构建映射后,是否可以尝试将代码(出于自动完成目的)放入initMap()中

有点像这样:

var autocomplete;
autocomplete = new google.maps.places.Autocomplete(
     (document.getElementById('autocomplete')),
      { types: ['geocode'] });
  google.maps.event.addListener(autocomplete, 'place_changed', function() {
  });
申报后

var marker = new google.maps.Marker({
    position:{lat: <?php echo $lat;  ?>, lng: <?php echo $long; ?>},
    map:map,
    animation: google.maps.Animation.DROP,
}); 
var marker=new google.maps.marker({
位置:{lat:,lng:},
地图:地图,
动画:google.maps.animation.DROP,
}); 

尝试过,但仍然不起作用。您可以添加有关您得到的错误的信息,以及您在此处尝试执行的操作:google.maps.event.addListener(自动完成,'place_changed',function(){})?我想做的是,当我在表单输入框中输入位置名称时,我会得到地址的建议。然后在选择地址并提交带有流量层的表单地图后,生成该提交位置的地址。当我仅包含库=带有api键的位置时(