javascript - angularJS:谷歌地图未加载地点API

标签 javascript angularjs google-maps google-maps-api-3

伙计们!

我正在尝试集成谷歌地图并使用 Places API。 我有一个文本框和一个谷歌地图(由于一些奇怪的原因没有加载),我试图在地方 API 的帮助下绘制谷歌地图中文本框中输入的地址。

但是,谷歌地图没有加载,也没有在控制台中抛出任何错误。 Places API 工作正常,我可以搜索地址,也可以取回坐标,但我无法看到谷歌地图或向该位置添加标记。

这是我的 HTML 代码:

<div ng-app="myApp" ng-controller="myMap">
<div class="form-group"  >
  <label for="source_point">
    <h2>Address</h2></label>
  <input type="text" id="source_point" name="source_point" class="form-control" placeholder="Enter your pick up address here">

  <p id="pickup_location"></p>
  <input type="text" id="src_lat" name="src_lat" placeholder="latitude">
  <input type="text" id="src_long" name="src_long" placeholder="longitude">
</div>
<!-- Map div -->
<div id="source_map"></div>
</div>

这是我的 Controller :

angular.module('myApp', []).
controller('myMap', function() {

  var map;
  var marker;
  var latLngC;

  function initialize() {
    latLngC = new google.maps.LatLng(14.5800, 121.0000);
    var mapOptions = {
      center: latLngC,
      zoom: 12,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
    };

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

    var marker = new google.maps.Marker({
      position: latLngC,
      map: map,
      draggable: true
    });

    //Add marker upon clicking on map
    //google.maps.event.addDomListener(map, 'click', addMarker);
    google.maps.event.addDomListener(map, 'click', function() {
      addMarker(map);
    });

    var places1 = new google.maps.places.Autocomplete(document.getElementById('source_point'));
    google.maps.event.addListener(places1, 'place_changed', function() {
      var place1 = places1.getPlace();

      var src_addr = place1.formatted_address;
      var src_lat = place1.geometry.location.lat();
      var src_long = place1.geometry.location.lng();

      var mesg1 = "Address: " + src_addr;
      mesg1 += "\nLatitude: " + src_lat;
      mesg1 += "\nLongitude: " + src_long;
      //alert(mesg1);

      document.getElementById('src_lat').value = src_lat;
      document.getElementById('src_long').value = src_long;
      document.getElementById('pickup_location').innerHTML = src_lat + ' , ' + src_long;
    });
    //Add marker upon place change          
    google.maps.event.addDomListener(places1, 'place_changed', function() {
      addMarker(map);
    });

  }
  google.maps.event.addDomListener(window, 'resize', initialize);
  google.maps.event.addDomListener(window, 'load', initialize);

  //Function to add marker upon clicking on a location in map
  function addMarker(map) 
  {
    var lat = document.getElementById('src_lat').value;
    var loong = document.getElementById('src_long').value;
    if (!lat || !loong) return;

    var coordinate = new google.maps.LatLng(lat, loong);
    if (marker) 
    {
      //if marker already was created change positon
      marker.setPosition(coordinate);
      map.setCenter(coordinate);
      map.setZoom(18);
    } 
    else 
    {
      //create a marker
      marker = new google.maps.Marker({
        position: coordinate,
        map: map,
        draggable: true
      });
      map.setCenter(coordinate);
      map.setZoom(18);
    }
  }

});

我还创建了一个 fiddle 来展示这个东西是如何工作的:从here看看它.

最佳答案

您正在使用#gmap而不是source_map。看看here

这是你的固定CSS:

#source_map {
  width: 450px;
  height: 450px;
}

关于javascript - angularJS:谷歌地图未加载地点API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917059/

相关文章:

javascript - 在谷歌地图中添加标记

java - 使标记带有单击时使用的自定义信息(Android,Google Maps v2)

javascript - 将新的 <tr> 添加到表后,搜索/排序功能已损坏

javascript - 我可以注册/触发我的自定义事件吗?

javascript - 将图像上传到运行时创建的指定文件夹和子文件夹

angularjs - 基于 token 的身份验证 - 安全漏洞?

javascript - AngularJS中登录成功后才重定向到页面并隐藏菜单

javascript - 如何根据数组中的项目显示 Accordion 组

javascript - 将图像从 Flask 放入 HTML5 Canvas

android - 如何在 Android 中使用 GPS 获取当前位置(街道、城市等)