google 地图 v3 中的标记 getmap 错误

marker getmap error in google maps v3

google maps v3 中的 getmap 有问题。 我已经使用 var myMarker = []; 对函数外部的 myMarker 进行了贴标,但仍然出现此错误:Uncaught TypeError: undefined is not a function.

问题是当我调用函数 Locatieknop 时。

有人可以帮助我吗?谢谢!

function MijnLocatie() {
    displayLocation = function(position) {
      myMarker = 0,
        // Container voor de latlon locaties
        var myLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        if (!myMarker) {
            // GPS icoon
            var image = new google.maps.MarkerImage(
                'images/bluedot_retina.png',
                null,
                null,
                new google.maps.Point(8, 8),
                new google.maps.Size(17, 17) 
            );

            // Nieuwe marker aanmaken
            myMarker = new google.maps.Marker({
                flat: true,
                icon: image,
                map: live.map,
                optimized: false,
                position: myLatLng,
                title: 'Mijn locatie',
                visible: true
            });

            // Markers updaten
        } else {
            myMarker.setPosition(myLatLng);
        }

    },

    useragent = navigator.userAgent;

// IPhone en Android ondersteuning
if (useragent.indexOf('iPhone') !== -1 || useragent.indexOf('Android') !== -1) {
    navigator.geolocation.watchPosition(
        displayLocation,
        handleError, {
            enableHighAccuracy: true,
            maximumAge: 30000,
            timeout: 27000
        }
    );

// Browsers met statische locatie
} else if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(displayLocation, handleError);
}
}

function Locatieknop() 
{
try
{
   if (!myMarker || !myMarker.getMap()) 
   {
       MijnLocatie()
   }
   else 
   {
       myMarker.setMap(null);
   }
}
catch(e)
{
  MijnLocatie();
}
}

当标记还没有被创建时(不是google.maps.Marker)他没有方法getMap,什么会导致错误。

您可以使用 try/catch-statement:

function Locatieknop() {
   try{
       if (myMarker.getMap() === null) {
            MijnLocatie()
        } else {
            myMarker.setMap(null);
        }
    }
    catch(e){
      MijnLocatie();
    }
}

您可以在检查地图之前简单地检查标记是否存在:

function Locatieknop() 
{
    try
    {
       if (!myMarker || !myMarker.getMap()) 
       {
           MijnLocatie()
       }
       else 
       {
           myMarker.setMap(null);
       }
   }
   catch(e)
   {
      MijnLocatie();
   }
}