2016-01-11 247 views
-1

我在頁面上使用PHP從數據庫生成的標記獲取了現有地圖。工作正常。現在我想在這張地圖上添加一個新的標記。在現有地圖上添加新的Google地圖標記onClick

我無法得到它的工作:

<script src="http://maps.google.com/maps/api/js?sensor=false" 
     type="text/javascript"></script> 
<script type="text/javascript"> 
//<![CDATA[ 
var map; 
var customIcons = { 
    restaurant: { 
    icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png', 
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    }, 
    bar: { 
    icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png', 
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    } 
     }; 

function load() { 
    var map = new google.maps.Map(document.getElementById("map"), { 
    center: new google.maps.LatLng(53.2193835,6.5665018), 
    zoom: 10, 
    mapTypeId: 'roadmap' 
    }); 

    var infoWindow = new google.maps.InfoWindow; 

    // Change this depending on the name of your PHP file 
    downloadUrl("geo.php?gmt=<? echo $stringGMT;?>&cat=<? echo $stringAAN;?>&abo=<? echo $stringABO;?>", function(data) { 
    var xml = data.responseXML; 
    var markers = xml.documentElement.getElementsByTagName("marker"); 

    var markersskg=[]; 

創建標記代碼:工作

 var icon = customIcons["bar"] || {}; 

     var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     shadow: icon.shadow 
     }); 



     bindInfoWindow(marker, map, infoWindow, html); 

    } 
     }); 

} 


function bindInfoWindow(marker, map, infoWindow, html) { 
    google.maps.event.addListener(marker, 'click', function() { 
    infoWindow.setContent(html); 
    infoWindow.open(map, marker); 
    }); 
} 

function downloadUrl(url, callback) { 
    var request = window.ActiveXObject ? 
     new ActiveXObject('Microsoft.XMLHTTP') : 
     new XMLHttpRequest; 

    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     request.onreadystatechange = doNothing; 
     callback(request, request.status); 
    } 
    }; 

    request.open('GET', url, true); 
    request.send(null); 
} 

function doNothing() {} 

//]]> 

function addmarker(lat,lon) { 
var myLatLng = {lat: lat, lng: lon}; 
var marker; 

    //create a marker 
    marker = new google.maps.Marker({   
     position: myLatLng, 
     map: map, 
     draggable: true 
    }); 

} 

和的onclick調用:

<div id="map" style="width: 100%; height: 600px"></div> 
<button id="button" onClick="addmarker(53.0241066,6.571086);">Drop Markers</button> 
+1

假設您的地圖是否另有定義,重新聲明它作爲一個空的變量在這裏一定會引起你的悲傷。我會擺脫'var map'行開始 – lucas

+0

是的,這是對我的愚蠢。還是行不通。 firebug:InvalidValueError:setMap:不是Map的一個實例;而不是StreetViewPanorama – user1725719

+0

的實例是您的範圍內的地圖對象?我認爲我們需要更多代碼... – lucas

回答

2

您聲明var map中的加載函數和那麼是不是在addMarker功能可見

嘗試宣告VAR地圖在全球範圍內

var map ; 

var customIcons = { 
    skg: { 
     icon: 'http://mywebsite.nl/img/logo_transparant24.png', 
     shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    } 
}; 

function load() { 
    map = new google.maps.Map(document.getElementById("map"), { 
    center: new google.maps.LatLng(53.2193835,6.5665018), 
    zoom: 10, 
    mapTypeId: 'roadmap' 
    });