Javascript 带有数组数组的json对象

Javascript 带有数组数组的json对象,javascript,google-maps-api-3,geojson,Javascript,Google Maps Api 3,Geojson,我正在尝试使用谷歌地图API在谷歌地图上创建两个多边形 我得到以下错误: 错误:构造函数参数0的值无效:-94.963194,39.316858,-94.95967,39.32199,-94.95905,39.32172,-94.95846,39.3214,-94.95792,39.32104,-94.95742,39.32064,-94.95698,39.32021,-94.95625,39.31927,-94.95599,39.31876,-94.95578,39.31824,-94.955

我正在尝试使用谷歌地图API在谷歌地图上创建两个多边形

我得到以下错误:

错误:构造函数参数0的值无效:-94.963194,39.316858,-94.95967,39.32199,-94.95905,39.32172,-94.95846,39.3214,-94.95792,39.32104,-94.95742,39.32064,-94.95698,39.32021,-94.95625,39.31927,-94.95599,39.31876,-94.95578,39.31824,-94.95564,39.31774,-94.95557,39.716,-316557,39.96318,-

我希望有人能帮助解释我做错了什么,并提出解决方案

<script
    src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=visualization">
</script>
<script>
var map;

function initialize() {
    var kansas_city = new google.maps.LatLng(39.00495613,-94.64780668);
    var mapOptions = {
        zoom: 10,
        center: kansas_city,
        mapTypeId: google.maps.MapTypeId.TERRAIN
    };
    map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

        // Create a <script> tag and set the USGS URL as the source.
        var script = document.createElement('script');
        script.src = 'sector.json';
        document.getElementsByTagName('head')[0].appendChild(script);
}

  // Loop through the results array and place a marker for each
  // set of coordinates.
  window.sector_callback = function(results) {
  for (var i = 0; i < results.features.length; i++) {
      var coords = results.features[i].geometry.coordinates;
      alert(coords);
      var polygons = new google.maps.Polygon({
      path: coords,
      map: map
      });
  }
}
</script>

JS中的数组循环永远不应该以默认方式完成。浏览器将在迭代的每个步骤中查找results.features.length。这是出于速度考虑

window.sector_callback = function(results) {
  for (var i = 0, j = results.features.length; i < j; i++) {
      var coords = results.features[i].geometry.coordinates;
      alert(coords);
      var polygons = new google.maps.Polygon({
      path: coords,
      map: map
      });
  }
}
window.sector\u callback=函数(结果){
对于(var i=0,j=results.features.length;i

关于答案,请查看JS中的数组循环永远不应该以默认方式完成。浏览器将在迭代的每个步骤中查找results.features.length。这是出于速度考虑

window.sector_callback = function(results) {
  for (var i = 0, j = results.features.length; i < j; i++) {
      var coords = results.features[i].geometry.coordinates;
      alert(coords);
      var polygons = new google.maps.Polygon({
      path: coords,
      map: map
      });
  }
}
window.sector\u callback=函数(结果){
对于(var i=0,j=results.features.length;i

要获得答案,请查看

谷歌地图API中的所有内容都需要使用基于Google的
Google.Maps.LatLng
的数据结构。由于JSON数据中的值是
[经度,纬度]
,因此在创建多边形之前,您需要从中构建
google.maps.LatLng
对象:

window.sector_callback = function(results) {
  for (var i = 0, len = results.features.length; i < len; i++) {
    var coords = results.features[i].geometry.coordinates[0];
    var path = [];

    for ( var j = 0, len2 = coords.length; j < len2; j++ ){
        path.push(new google.maps.LatLng(coords[j][1], coords[j][0]));
    }

    var polygons = new google.maps.Polygon({
      path: path,
      map: map
    });
  }
}
window.sector\u callback=函数(结果){
对于(变量i=0,len=results.features.length;i

编辑:我必须为坐标指定
0th
元素,oops

谷歌地图API中的所有内容都需要使用谷歌基于
Google.Maps.LatLng
的数据结构。由于JSON数据中的值是
[经度,纬度]
,因此在创建多边形之前,您需要从中构建
google.maps.LatLng
对象:

window.sector_callback = function(results) {
  for (var i = 0, len = results.features.length; i < len; i++) {
    var coords = results.features[i].geometry.coordinates[0];
    var path = [];

    for ( var j = 0, len2 = coords.length; j < len2; j++ ){
        path.push(new google.maps.LatLng(coords[j][1], coords[j][0]));
    }

    var polygons = new google.maps.Polygon({
      path: path,
      map: map
    });
  }
}
window.sector\u callback=函数(结果){
对于(变量i=0,len=results.features.length;i

编辑:我必须为坐标指定
0th
元素,oops

多边形数组是一个数组数组(用于支持多边形中的多条路径)。 要访问您需要执行的数字(假设您有单路径的简单多边形):

然后将它们转换为google.maps.LatLng对象:

path.push(new google.maps.LatLng(coords[j][1], coords[j][0]));

您的多边形数组是一个数组数组(用于支持多边形中的多条路径)。 要访问您需要执行的数字(假设您有单路径的简单多边形):

然后将它们转换为google.maps.LatLng对象:

path.push(new google.maps.LatLng(coords[j][1], coords[j][0]));

千万不要说“永不”,如果在循环过程中通过数组循环并添加项,则必须检查每次迭代的长度。此外,在现代浏览器中,变量查找和属性查找之间的差别非常小,除了默认方式之外,您几乎不需要执行任何操作。不,在可能的情况下,不应该像您描述的任何迭代那样执行。你所做的就是所谓的微观优化。您应该从最简单的实现开始,并在需要时对其进行优化。只要它不具有传染性,这是非常无害的千万不要说“永不”,如果在循环过程中通过数组循环并添加项,则必须检查每次迭代的长度。此外,在现代浏览器中,变量查找和属性查找之间的差别非常小,除了默认方式之外,您几乎不需要执行任何操作。不,在可能的情况下,不应该像您描述的任何迭代那样执行。你所做的就是所谓的微观优化。您应该从最简单的实现开始,并在需要时对其进行优化。只要它不具有传染性,这是非常无害的您好,Jason-您的解决方案似乎正确地从geoJSON数据中获取了所有的lat/long,但由于某些原因,我没有在地图上看到多边形。我没有看到firebug有任何编译错误。还有什么我可能遗漏的吗?您好Jason-您的解决方案似乎正确地从geoJSON数据中获取了所有的纬度/长度,但出于某种原因,我没有在地图上看到多边形。我没有看到firebug有任何编译错误。还有什么我可能错过的吗?