JAVASCRIPT-->;为什么我会收到错误消息;未捕获的类型错误:数字不是函数";?

JAVASCRIPT-->;为什么我会收到错误消息;未捕获的类型错误:数字不是函数";?,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我想知道为什么我会收到错误消息(UncaughtTypeError:number不是函数),这是我的代码: <script type = "text/javascript"> function dataparse(points) { points = points.substr(0, points.length - 1); var linar = points.split("\n"); // Break each point by lin

我想知道为什么我会收到错误消息(UncaughtTypeError:number不是函数),这是我的代码:

<script type = "text/javascript">
  function dataparse(points)
   {
      points = points.substr(0, points.length - 1);
      var linar = points.split("\n");
      // Break each point by line break
      var wrkar = [];
      var pntar = [];
      for (var i = 0; i < linar.length; i++)
      {
          wrkar = linar[i].split(",", 2);
          // Break each point into x and y
          pntar.push(new google.maps.LatLng(parseFloat(wrkar[0]), parseFloat(wrkar[1])));
      }
      return pntar;
  }


  var cd = [
  (30.40545181622765, -9.582610613708539)
  (30.405229737948233, -9.577975756530805)
  (30.40300892737293, -9.577546603088422)
  (30.402268645956614, -9.584241396789594)
  ];

  var df = dataparse(cd);
  alert('df');

函数数据解析(点)
{
点=点.substr(0,点.length-1);
var linar=点。拆分(“\n”);
//按换行符打断每个点
var wrkar=[];
var pntar=[];
对于(变量i=0;i
由于
cd
变量而引发错误。你使用括号,但是它不正确。 遵循
dataparse
方法
cd
变量应该如下所示:

var cd = "30.40545181622765, -9.582610613708539\n"+
    "30.405229737948233, -9.577975756530805\n"+
    "30.40300892737293, -9.577546603088422\n"+
    "30.402268645956614, -9.584241396789594";
更新:但是,您可以用更漂亮的格式重写代码:

function dataparse(points) {
    var pntar = [];
    for (var i = 0; i < points.length; i++) {
        pntar.push(new google.maps.LatLng(points[i][0], points[i][1]));
    }
    return pntar;
}

var cd = [
    [30.40545181622765, -9.582610613708539],
    [30.405229737948233, -9.577975756530805],
    [30.40300892737293, -9.577546603088422],
    [30.402268645956614, -9.584241396789594]
    ];

var df = dataparse(cd);
alert(df);
函数数据解析(点){
var pntar=[];
对于(变量i=0;i
由于
cd
变量而引发错误。你使用括号,但是它不正确。 遵循
dataparse
方法
cd
变量应该如下所示:

var cd = "30.40545181622765, -9.582610613708539\n"+
    "30.405229737948233, -9.577975756530805\n"+
    "30.40300892737293, -9.577546603088422\n"+
    "30.402268645956614, -9.584241396789594";
更新:但是,您可以用更漂亮的格式重写代码:

function dataparse(points) {
    var pntar = [];
    for (var i = 0; i < points.length; i++) {
        pntar.push(new google.maps.LatLng(points[i][0], points[i][1]));
    }
    return pntar;
}

var cd = [
    [30.40545181622765, -9.582610613708539],
    [30.405229737948233, -9.577975756530805],
    [30.40300892737293, -9.577546603088422],
    [30.402268645956614, -9.584241396789594]
    ];

var df = dataparse(cd);
alert(df);
函数数据解析(点){
var pntar=[];
对于(变量i=0;i
(30.40545181622765,-9.582610613708539)
计算结果为
-9.582610613708539

与下一行一起,它被解释为

-9.5779756530805(30.405229737948233,-9.5779756530805)

这当然会失败,因为
-9.577…
不是一个函数。

(30.40545181622765,-9.582610613708539)
计算结果为
-9.582610613708539

与下一行一起,它被解释为

-9.5779756530805(30.405229737948233,-9.5779756530805)

这当然会失败,因为
-9.577…
不是一个函数

  • 给定
    points.substr(0,points.length-1),您的
    dataparse
    函数需要一个字符串
  • 您将cd初始化为数组,但解析器尝试将
    (num1,num2)(num3,num4)
    作为函数执行(有关原因,请参阅GGG的答案)
  • 给定
    points.substr(0,points.length-1),您的
    dataparse
    函数需要一个字符串
  • 您将cd初始化为数组,但解析器尝试将
    (num1,num2)(num3,num4)
    作为函数执行(有关原因,请参阅GGG的答案)

  • 您的点数组无效。您必须为点本身使用方括号,并用逗号将其拆分

    var cd = [
        [30.40545181622765, -9.582610613708539],
        [30.405229737948233, -9.577975756530805],
        [30.40300892737293, -9.577546603088422],
        [30.402268645956614, -9.584241396789594]
    ];
    
    这样,您还必须修改(简化)您的
    dataparse
    函数以正确处理数组

    function dataparse(points) {
        var i,
            length,
            pntar = [];
    
        for (i = 0, length = points.length; i < length; i++) {
            pntar.push(new google.maps.LatLng(points[i][0], points[i][1]));
        }
    
        return pntar;
    }
    
    函数数据解析(点){
    var i,
    长度,
    pntar=[];
    对于(i=0,长度=points.length;i
    您的点数组无效。您必须为点本身使用方括号,并用逗号将其拆分

    var cd = [
        [30.40545181622765, -9.582610613708539],
        [30.405229737948233, -9.577975756530805],
        [30.40300892737293, -9.577546603088422],
        [30.402268645956614, -9.584241396789594]
    ];
    
    这样,您还必须修改(简化)您的
    dataparse
    函数以正确处理数组

    function dataparse(points) {
        var i,
            length,
            pntar = [];
    
        for (i = 0, length = points.length; i < length; i++) {
            pntar.push(new google.maps.LatLng(points[i][0], points[i][1]));
        }
    
        return pntar;
    }
    
    函数数据解析(点){
    var i,
    长度,
    pntar=[];
    对于(i=0,长度=points.length;i
    您得到了这个结果,因为括号中的每个数字都经过计算,所以您应该用函数接受的正确参数替换它。。。由于您使用的是
    substr
    ,但实际上您希望传递一个数组,因此还应向函数中添加一些代码:

    function dataparse(pairs)
    {
        for ( i=0; i < pairs.length ; i++ ) {
           var wrkar = pairs[i].split(", ",2);
           var pntar = [] ;
           pntar.push( new google.maps.LatLng(parseFloat(wrkar[0]), parseFloat(wrkar[1])) ); 
           return pntar;
        }    
    }
    
    
    var cd = [
            "30.40545181622765, -9.582610613708539",
            "30.405229737948233, -9.577975756530805",
            "30.40300892737293, -9.577546603088422",
            "30.402268645956614, -9.584241396789594"
    ];
    
    var df = dataparse(cd);
    alert('df');​
    
    函数数据解析(成对)
    {
    对于(i=0;i

    这是一个JSFIDLE,因为括号中的每个数字都经过计算,所以应该用函数接受的正确参数替换它。。。由于您使用的是
    substr
    ,但实际上您希望传递一个数组,因此还应向函数中添加一些代码:

    function dataparse(pairs)
    {
        for ( i=0; i < pairs.length ; i++ ) {
           var wrkar = pairs[i].split(", ",2);
           var pntar = [] ;
           pntar.push( new google.maps.LatLng(parseFloat(wrkar[0]), parseFloat(wrkar[1])) ); 
           return pntar;
        }    
    }
    
    
    var cd = [
            "30.40545181622765, -9.582610613708539",
            "30.405229737948233, -9.577975756530805",
            "30.40300892737293, -9.577546603088422",
            "30.402268645956614, -9.584241396789594"
    ];
    
    var df = dataparse(cd);
    alert('df');​
    
    函数数据解析(成对)
    {
    对于(i=0;i