Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 API使用引用id放置初始化地图_Javascript_Google Maps Api 3_Reference - Fatal编程技术网

Javascript Google API使用引用id放置初始化地图

Javascript Google API使用引用id放置初始化地图,javascript,google-maps-api-3,reference,Javascript,Google Maps Api 3,Reference,我尝试将google api places与getDetails()方法一起使用。我只需要带有数据库中引用键位置的地图。 是否有一种方法可以使用地图并直接使用参考键设置位置 当前代码: function initialize() { var map = new google.maps.Map(document.getElementById('map-canvas'), { center: new google.maps.LatLng(-33.8665433, 151.19

我尝试将google api places与getDetails()方法一起使用。我只需要带有数据库中引用键位置的地图。 是否有一种方法可以使用地图并直接使用参考键设置位置

当前代码:

  function initialize() {
    var map = new google.maps.Map(document.getElementById('map-canvas'), {
      center: new google.maps.LatLng(-33.8665433, 151.1956316),
      zoom: 15
    });

    var request = {
      reference: 'CqQBkQAAAJ2ovSaBhBgD-_zyhNR-T2ZzfIKlpbvRqXRYM4K2gsbKuHuGiqIYeJ8cJDmecpxjUTM28LZ3f1XmeUQXg9jxJt_sHmDmLPiWUMP9fUYUH7yyQMzeWM9GzBqRZgUs_g6ylpLBnJffvWbqTWA3ArwSeyJoSDNG7yHlsaauOW5vFIUB34l6i3Z7mDkZ0exhcQ_tMGTudsddisZ96eoT3qZfgjkSEC4k4UTdl9VEZpoK0FFewhcaFI_IrhKbeTIiOizX6HF-SkDbO8hR'
    };

    var infowindow = new google.maps.InfoWindow();
    var service = new google.maps.places.PlacesService(map);

    service.getDetails(request, function(place, status) {
      if (status == google.maps.places.PlacesServiceStatus.OK) {
        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });


    if (place.geometry.viewport) {
      map.fitBounds(place.geometry.viewport);
    } else {
      map.setCenter(place.geometry.location);
      map.setZoom(17);
    }


        google.maps.event.addListener(marker, 'click', function() {
          infowindow.setContent(place.name);
          infowindow.open(map, this);
        });
      }
    });
  }

  google.maps.event.addDomListener(window, 'load', initialize);
地图首先加载到sydney,在google响应几毫秒后,地图定位到参考键的位置


我的想法是直接用refenrence键初始化贴图,而不必先创建贴图等等……我认为我的解决方案不是最好的,有没有更好的方法?

一个选项。使用places回调初始化映射,在不返回结果的情况下提供回退:

  function initialize() {

    var request = {
      reference: 'CqQBkQAAAJ2ovSaBhBgD-_zyhNR-T2ZzfIKlpbvRqXRYM4K2gsbKuHuGiqIYeJ8cJDmecpxjUTM28LZ3f1XmeUQXg9jxJt_sHmDmLPiWUMP9fUYUH7yyQMzeWM9GzBqRZgUs_g6ylpLBnJffvWbqTWA3ArwSeyJoSDNG7yHlsaauOW5vFIUB34l6i3Z7mDkZ0exhcQ_tMGTudsddisZ96eoT3qZfgjkSEC4k4UTdl9VEZpoK0FFewhcaFI_IrhKbeTIiOizX6HF-SkDbO8hR'
    };

    var map = new google.maps.Map(document.getElementById('map-canvas'));
    var infowindow = new google.maps.InfoWindow();
    var service = new google.maps.places.PlacesService(map);

    service.getDetails(request, function(place, status) {
      if (status == google.maps.places.PlacesServiceStatus.OK) {

        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });


        if (place.geometry.viewport) {
          map.fitBounds(place.geometry.viewport);
        } else {
          map.setCenter(place.geometry.location);
          map.setZoom(17);
        }

        google.maps.event.addListener(marker, 'click', function() {
          infowindow.setContent(place.name);
          infowindow.open(map, this);
        });
      } else {
         // fall back if places request fails.
         map = new google.maps.Map(document.getElementById('map-canvas'), {
           center: new google.maps.LatLng(-33.8665433, 151.1956316),
           zoom: 15
         });
      }          
    });
  }
  google.maps.event.addDomListener(window, 'load', initialize);