谷歌地图v3中的标记getmap错误

时间:2015-01-21 20:47:10

标签: javascript variables google-maps-api-3

google maps v3中的getmap遇到了一些问题。 我使用var myMarker = [];在函数之外对myMarker进行了十分转换,但仍然出现此错误:未捕获TypeError:undefined不是函数。

问题是当我调用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();
}
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

当标记尚未创建(不是google.maps.Marker)时,他没有方法getMap,这将导致错误。

您可以使用try / catch语句:

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