0

运行以下代码时出现两个错误:1. Uncaught InvalidValueError: invalid argument to setPosition: [object Object] 2. Uncaught TypeError: Cannot call method 'contains' of undefined

编辑:我可以像下面那样使用相同的标记标签来创建多个标记吗?

基本上试图将标记添加到一组经纬度并计算到一个公共点的距离:

<script type="text/javascript">
        var map;
        var mapOptions;
        var lat = [33, 34, 35, 36];
        var lon = [-84, -86, -89, -100];
        var src = [30, -90];
        var dist = [];
        var marker;
        var directionsService = new google.maps.DirectionsService();
        var directionsRequest;
        var directionsRenderer;
        var markerPoints =  [{"location": new google.maps.LatLng(lat[0], lon[0])}, 
                             {"location": new google.maps.LatLng(lat[1], lon[1])},
                             {"location": new google.maps.LatLng(lat[2], lon[2])},
                             {"location": new google.maps.LatLng(lat[3], lon[3])}];

          function initialize() {
            directionsRenderer = new google.maps.DirectionsRenderer();
            mapOptions = {
              center: new google.maps.LatLng(33.75, -84.39),
              mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById("map-canvas"),
                    mapOptions);
            directionsRenderer.setMap(map);

            marker = new google.maps.Marker({
                 position: new google.maps.LatLng(src[0], src[1]),
                 //icon: 'http://maps.google.com/mapfiles/marker.png',
                 map: map
              });

            for(var iter = 0; iter < lat.length; iter++)
            {
                placeMarker(iter);
                getDistances(iter);
            }
          }

          function placeMarker(iter)
          {
                 marker = new google.maps.Marker({
                 position: markerPoints[iter],
                 //icon: 'http://maps.google.com/mapfiles/marker_green.png',
                 map: map
              });
          }

          function getDistances(iter)
          {
              directionsRequest = {
                    origin: new google.maps.LatLng(src[0], src[1]),
                    destination: markerPoints[iter],
                    travelMode: google.maps.TravelMode.DRIVING,
              };

              directionsService.route(directionsRequest, function(response, status){
                  if(status == google.maps.DirectionsStatus.OK)
                      {
                            dist.push(response.routes[0].legs[0].distance);
                      }
                  else
                      {
                        alert("Impossible");
                      }
              });
          }

        google.maps.event.addDomListener(window, 'load', initialize);
        </script>
4

1 回答 1

1

干得好...

问题 #1:未捕获的 InvalidValueError:setPosition 的无效参数:[object Object]

您的 markerPoints 数组存在问题。代替

var markerPoints =  [{"location": new google.maps.LatLng(lat[0], lon[0])}, 
                     {"location": new google.maps.LatLng(lat[1], lon[1])},
                     {"location": new google.maps.LatLng(lat[2], lon[2])},
                     {"location": new google.maps.LatLng(lat[3], lon[3])}];

应该是这样的。。

 var markerPoints = [new google.maps.LatLng(lat[0], lon[0]),
                     new google.maps.LatLng(lat[1], lon[1]),
                     new google.maps.LatLng(lat[2], lon[2]),
                     new google.maps.LatLng(lat[3], lon[3])];

问题 #2:未捕获的类型错误:无法调用未定义的“包含”方法:

如果您使用地图 api 的实验性 api 版本(v=3.exp),那么您会遇到此问题。您也应该使用任何发行版本。您可以通过访问Google Map API 版本信息部分找到有关不同版本的详细信息

希望这会帮助你。

于 2013-10-19T08:22:57.917 回答