google maps laden der map auf den button klicken - laden-Marker mit einer anderen Taste
Ich versuche zu laden Markierungen auf dem klicken einer Taste, aber irgendwo fehlt mir etwas. 1. Karte zieht und die Lasten mit einem Klick. 2. Marker laden Sie mit dem Klick auf eine andere Schaltfläche. hier ist, was ich habe:
<!DOCTYPE>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title></title>
<link type="text/css" href="
<?php
$stylesarray = array("field");
echo $stylesarray[mt_rand(0,count($stylesarray)-1)];
?>.css">
<link href="images/favicon.ico">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://maps.googleapis.com/maps/api/js?key=xxx&sensor=false"></script>
<script type="text/javascript">
var map = null;
$(document).ready(function(){
var lat=document.getElementById("latitude");
var long=document.getElementById("longitude");
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition);
}
function showPosition(position) {
lat.value=+position.coords.latitude;
long.value=+position.coords.longitude;
}
});
function load() {
var map = new google.maps.Map(document.getElementById("mapcontainer"), {
center: new google.maps.LatLng(20,0),
zoom: 3,
styles: mapstyle,
mapTypeControl: false,
navigationControl: false,
streetViewControl: false,
maxZoom: 8,
minZoom: 3,
mapTypeId: 'roadmap'
});
}
function getmarkers(){
downloadUrl("markers.php", function(data) {
//alert ("it works");
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var id = markers[i].getAttribute("id");
var info = markers[i].getAttribute("info");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("latitude")),
parseFloat(markers[i].getAttribute("longitude")));
var date = markers[i].getAttribute("date");
var html = "<div id='tooltip'><div id='tiptext'>" + info
+ "<div id='number'>" + id + "</div>"
+ "<div id='date'>" + date + "</div>"
+ "</div></div>";
var marker = new google.maps.Marker({
map: map,
position: point,
icon: 'images/mapicon.png'
});
createTooltip(marker, html);
}
});
</script>
</head>
<body>
<div id="mapcontainer">
<form>
<input type="button" id="map" onClick="load()"></input>
</form>
<form>
<input type="button" onClick="getmarkers()"></input>
</form>
</body>
</html>
xml-Beispiel:
<markers>
<marker id="330" info="blahblah" date="2012-10-03" latitude="20.00" longitude="-81.00"/>
</markers>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Karte ist Sie eine lokale variable zu deiner initialize-Funktion. Es wird nicht zugänglich sein, um den code für das laden der Marker.
Versuchen, es zu definieren Global (außerhalb aller Funktionen):
Dann initialisieren Sie es in Ihrem laden-Funktion
Das problem (nach syntax-Fehler) mit deinem geposteten code ist, dass die getmarkers Funktion ist lokal zu der Funktion laden. Es muss global sein, um aufgerufen werden, indem Sie ein HTML-element klicken Sie auf Funktion.
Live working-version, basierend auf deinem Beispiel-code
Es scheint, wie Sie nicht erklären, die map-variable im globalen Bereich. Nur in der load-Funktion Umfang, deklarieren Sie Sie als eine Globale variable und es sollte funktionieren.
Versuchen Sie das einwickeln der DownloadUrl Funktionsaufruf in einer anderen Funktion und Aufruf, statt.
Funktion getmarkers() ist so konzipiert, um alle Marker mit einer for-Schleife
Laden Sie eine Marke an eine Zeit, die Sie benötigen, erhöhen Sie für jede Schaltfläche, klicken Sie auf
Ie
Var i =0
weltweitInkrement ich am Ende der getmarkers()
i++
Sollten Sie aufhören, den Schritten nach dem letzten Element des Arrays, wenn es um
markers.length