Google Maps API折线创建失败,显示“未捕获的TypeError:数字不是函数”

时间:2015-03-06 00:33:36

标签: javascript google-maps-api-3 django-templates google-maps-markers google-polyline

我正在使用谷歌地图JS api工作django项目。 基本上这里发生的是我正在创建一个以点为中心的地图(完美地工作),绘制由journey变量指定的一堆点(值由django模板替换), 然后尝试在这些点之间绘制多边形。 (无法在JS控制台上生成带有“Uncaught TypeError:number不是函数”的折线。)

JS控制台上的回溯对我来说是非常难以理解的,特别是由于所有.js文件都被缩短了。

当我记录折线的路径属性和我正在添加的坐标(如下所示)时,一切似乎都有效。我知道coord格式正确,因为我认为Marker和Polyline应该为它们的位置采用相同的数据类型(LatLng),并且标记工作正常。任何人都知道发生了什么?

var mapOptions = {
  center: { lat: 37.23112,
            lng: -122.29398
  },
  zoom: 15
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

// Make the line that will trace the guys route:
var polyOptions = {
  strokeColor: '#000000',
  srokeOpacity: 1.0,
  strokeWeight: 3
};
var poly = new google.maps.Polyline(polyOptions);
poly.setMap(map);

// Make an array of everywhere the lilguys has been. Passed into this django template as {"lat": 12, "lng": 8} objects.
var journey = [{"lat": 33.2389, "lng":-123.9349}, {"lat":32.928392, "lng":-122.29289}, {"lat":33.928982, "lng":-120.298392}];
var journey_markers = [];

// Draw all the placemarks
for (var i = 0; i < journey.length; i++) {
  var coord = journey[i];
  journey_markers.push(new google.maps.Marker({position: coord, map:map}));
  var path = poly.getPath();
  console.log(coord);
  console.log(path);
  path.push(coord);
}

谢谢!

编辑: 我将模板变量替换为它们评估的内容。通过查看浏览器中的HTML源代码来检查,并确认不是错误的来源。

1 个答案:

答案 0 :(得分:0)

找出答案。似乎与Markers不同,Polyline路径需要google.maps.LatLng()个对象而不是latlng文字。 以下修复了此问题:

...
// Draw all the placemarks
for (var i = 0; i < journey.length; i++) {
  var coord = new google.maps.LatLng(journey[i].lat, journey[i].lng);
...