0

私はこのリンクを見ました:

GoogleマップAPI v3は配列からポリラインを追加します

これはどういうわけか私の問題と少し同じです..ご覧のとおり、次のようなjavascriptエラーが発生します:

Uncaught TypeError: Cannot call method 'getPath' of undefined 
AddCoordinate map:118
(anonymous function)

さて、私のコードは基本的に、ページがマップと一緒に読み込まれるときに最初に座標を入力します..そして、クリックがトリガーされるまでに(htmlボタン)、マップがポリラインでプロットされるのはそのときだけです..私は私がそれを非常によく説明したことを願っています..ここに私が得たものがあります:

    var map;
    var Markers = [];
    var Coordinates = [];
    var LinePath;

    function initialize()
    {  
      var myLatLng = new google.maps.LatLng(21.291982, -140.821856);
      var myOptions = {
                zoom: 3,
            center: myLatLng,
            mapTypeId: google.maps.MapTypeId.SATELLITE
          };
      var MarkerSize = new google.maps.Size(48,48);
      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    }

    function AddCoordinate( lat, long )                                                                                                                         {
      var path = LinePath.getPath(); 
      path.push( new google.maps.LatLng( lat, long ) );
      LinePath.setPath(path);
    }


    function PlotLine()
    {
      LinePath = new google.maps.Polyline({
                path:Coordinates,                                                                                                                           
                strokeColor:"#ffffff",
                strokeOpacity:1.0,
                strokeWeight:5
                });
      LinePath.setMap(map);
    }


   <html>
    <body onload="initialize()">
    <div id="map_canvas" ></div>
    <?php
                    foreach($arrayOfPlotPoints as $key => $value){ 
                        $longitude = round($value['longitude'],5);
                        $latitude = round($value['latitude'],5);
                        $snrLevel = $value['snr_level'];
                        echo '<script type="text/javascript">AddCoordinate('.$latitude.','.$longitude.')</script>';
                    ?>
                        <option value="<?php echo $longitude.",".$latitude.",".$snrLevel?>"> Lg:<?php echo $longitude." Lt: ".$latitude." LV: ".$snrLevel?></option>
                        <?php } ?>
                    </select>
                    <br /><br />
                    <?php echo $this->Form->button('PLOT', array('type'=>'button', 'onclick'=>'PlotLine()')); ?>
echo $this->Form->button('PLOT', array('type'=>'button', 'onclick'=>'PlotLine()')); 
     ?>

********編集済み************

コードを部分的に変更しましたが、同じエラーが発生します..

Uncaught TypeError: Cannot call method 'getPath' of undefined 
    AddCoordinate (anonymous function)


function initialize() {
 //.....
 LinePath = new google.maps.Polyline({
        path:Coordinates,                                                                                                                           //san ka galing Coordinates??? dineclare ka pero di ka aman nilagyan "YATA" ng laman
        strokeColor:"#ffffff",
        strokeOpacity:1.0,
        strokeWeight:5
        });
}


function AddCoordinate( latitude, longitude )                                                                                                                       {
  var path = LinePath.getPath(); 
  path.push(  latitude, longitude  );
}

function PlotLine()
{
  LinePath = new google.maps.Polyline({
            path:Coordinates,                                                                                                                           
            strokeColor:"#ffffff",
            strokeOpacity:1.0,
            strokeWeight:5
            });
  LinePath.setMap(map);

}

<HTML>
select name="long_and_lat" id="long_and_lat" style="width:220px;height:250px;" size="100">
                <?php    
                $plotPoints = array();
                foreach($arrayOfPlotPoints as $key => $value){ 
                    $longitude = round($value['longitude'],5);
                    $latitude = round($value['latitude'],5);
                    $snrLevel = $value['snr_level'];
                    echo '<script type="text/javascript">AddCoordinate('.$latitude.','.$longitude.')</script>';
                ?>
                    <option value="<?php echo $longitude.",".$latitude.",".$snrLevel?>"> Lg:<?php echo $longitude." Lt: ".$latitude." LV: ".$snrLevel?></option>
                    <?php } ?>
                </select>
                <br /><br />
                <?php echo $this->Form->button('PLOT', array('type'=>'button', 'onclick'=>'PlotLine()')); ?>
</html>
4

1 に答える 1

1

LinePathinAddCoordinate()を呼び出していますが、(ボタンをクリックして) が呼び出されるLinePathまで作成されません。PlotLine()

おそらく、宣言時に作成してからLinePath、単に呼び出すことができます。LinePath.setMap(map);PlotLine()

多分このようなもの:

<html>

<head>
<link href="https://google-developers.appspot.com/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

    var map;
    var Markers = [];
    var Coordinates = [];
    var LinePath = new google.maps.Polyline({
                path:Coordinates,          
                strokeColor:"#ffffff",
                strokeOpacity:1.0,
                strokeWeight:5
                });


    function initialize()
    {  
      var myLatLng = new google.maps.LatLng(21.291982, -140.821856);
      var myOptions = {
                zoom: 3,
            center: myLatLng,
            mapTypeId: google.maps.MapTypeId.SATELLITE
          };
      var MarkerSize = new google.maps.Size(48,48);
      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    }

    function AddCoordinate( lat, long ) {
      var path = LinePath.getPath(); 
      path.push( new google.maps.LatLng( lat, long ) );
      LinePath.setPath(path);

    }

    function PlotLine()
    {
      LinePath.setMap(map);
    }

    </script>

</head>
<body onload="initialize()">
    <div id="map_canvas" ></div>
    <script type="text/javascript">AddCoordinate(11,12)</script>
</body>
</html>
于 2012-06-29T03:35:21.077 に答える