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();
}
}
答案 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();
}
}