php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.02.2011, 17:54  
Benutzer
 
Benutzerbild von Teela
 
Registriert seit: 23.03.2008
Beiträge: 30
PHP-Kenntnisse:
Anfänger
Teela befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Google Maps Boundaries automatisch berechnen

Hallo zusammen,

in meinem Script soll eine Karte mit vielen Markern angezeigt werden.
Die Marker werden aus einer XML-Datei gelesen.

Ich versuche nun, den Mittelpunkt der Karte und den Zoomfaktor automatisch passend zu den eingetragenen Markern einzurichten.

Dazu habe ich GLatLngBounds() gefunden, irgendwie funktioniert es aber nicht:

Code:
function load() 
        {
        	if (GBrowserIsCompatible()) 
			{
          		var map = new GMap2(document.getElementById("map"));
				
           		map.addControl(new GSmallMapControl());

				var bounds = new GLatLngBounds();
				
				GDownloadUrl("xml/<?php echo $inputfile; ?>", 
					function(data) 
					{
						var xml = GXml.parse(data);
						var markers = xml.documentElement.getElementsByTagName("marker");
						
						for (var i = 0; i < markers.length; i++) 
						{
							var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
							var marker = new GMarker(point, iconBlue);
							
							// Marker direkt auf Map anzeigen
							map.addOverlay(marker);
							
							bounds.extend(point);
						}
					}
				);
				
				map.setCenter ( bounds.getCenter(), map.getBoundsZoomLevel(bounds) );
          	}
        }
Das Script an sich funktioniert (wenn ich die map.setCenter manuell setze), aber die Boundaries rechnet er irgendwie nicht aus.

Hier mal die Referenz zu den Bounds:
http://code.google.com/intl/de-DE/ap...#GLatLngBounds

Ich kenne mich mit JavaScript jetzt noch nicht so sehr aus, kann also sein dass es ein absolut doofer Fehler ist...

Hoffe mir kann da jemand weiterhelfen
Teela ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.03.2011, 18:31  
Benutzer
 
Benutzerbild von Teela
 
Registriert seit: 23.03.2008
Beiträge: 30
PHP-Kenntnisse:
Anfänger
Teela befindet sich auf einem aufstrebenden Ast
Standard

Sorry fürs hochpushen, aber es ist jetzt schon mehr als eine Woche her...
Hat denn niemand hier mit Google Maps Erfahrung oder kann mir wenigstens sagen, was an meinem Code falsch ist?
Teela ist offline   Mit Zitat antworten
Alt 08.03.2011, 22:54  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.725
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Ein problemloser testbares Beispiel würde deine Chancen auf Antwort sicher erhöhen.

Kann es sein, dass der Request asynchron läuft und die Daten noch nicht da sind, wenn du map.setCenter() aufrufst? Vielleicht hilft es schon, den Befehl mit in die Callback-Funktion zu setzen. Das ist jetzt aber geraten.
__________________
Blog | Buch | Kaloa
mermshaus ist gerade online   Mit Zitat antworten
Alt 10.03.2011, 09:18  
Benutzer
 
Benutzerbild von Teela
 
Registriert seit: 23.03.2008
Beiträge: 30
PHP-Kenntnisse:
Anfänger
Teela befindet sich auf einem aufstrebenden Ast
Standard

Erst mal vielen Dank für deine Antwort


Viel mehr als den oben genannten Code gibt es eigentlich nicht.
Aber hier nochmal der gesamte Quellcode, wenn's hilft:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="de" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta name="robots" content="noindex, nofollow" />
<title>Google Maps Test</title>

		<script src="http://maps.google.com/maps?file=api&v=2&key=<?php echo KEY; ?>" type="text/javascript"></script>
		<script type="text/javascript" src="markerclusterer.js"></script>
        <script type="text/javascript">
        //<![CDATA[
    
        var iconBlue = new GIcon(); 
        iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
        iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
        iconBlue.iconSize = new GSize(12, 20);
        iconBlue.shadowSize = new GSize(22, 20);
        iconBlue.iconAnchor = new GPoint(6, 20);
        iconBlue.infoWindowAnchor = new GPoint(5, 1);
    
        function load() 
        {
        	if (GBrowserIsCompatible()) 
			{
          		var map = new GMap2(document.getElementById("map"));
				
           		map.addControl(new GSmallMapControl());

				var bounds = new GLatLngBounds();
				
				GDownloadUrl("xml/<?php echo $inputfile; ?>", 
					function(data) 
					{
						var xml = GXml.parse(data);
						var markers = xml.documentElement.getElementsByTagName("marker");
						
						// Array für Clustering erstellen
						var clusterdata = [];
						
						for (var i = 0; i < markers.length; i++) 
						{
							var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
													parseFloat(markers[i].getAttribute("lng")));
							var marker = new GMarker(point, iconBlue);
							
							// Marker direkt auf Map anzeigen
							// map.addOverlay(marker);
							
							// Marker in Array fuer Clustering eintragen
							clusterdata.push(marker);
								
							bounds.extend(point);
						}
						
						// Marker Clustering berechnen und anzeigen
						var markerCluster = new MarkerClusterer(map, clusterdata);
					}
				);
				
				map.setCenter ( bounds.getCenter(), map.getBoundsZoomLevel(bounds) );
          	}
        }		    
        
        //]]>
        </script>
</head>

<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 650px; height: 450px"></div>';
</body>

</html>
$inputfile ist halt ne xml-Datei mit Geodaten.


Zu deiner Antwort: Das Problem bestünde doch dann, wenn map.setCenter vor dem Auslesen der xml-Datei aufgerufen wird. oder? Wie kann ich das überprüfen? Sry wenn ich mich hier blöd anstelle, ich habe mit JavaScript einfach nocht nicht genug Erfahrung...
Teela ist offline   Mit Zitat antworten
Alt 10.03.2011, 11:47  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.725
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Aus der Doku zu GDownloadUrl:

Zitat:
This function provides a convenient way to asynchronously retrieve a resource identified by a URL. [Hervorhebung hinzugefügt]
- http://code.google.com/apis/maps/doc...l#GDownloadUrl

Asynchron bedeutet, das Script, das den Request abschickt, läuft normal weiter. Es werden also die Folgezeilen ausgeführt. Wenn der Request vom Server beantwortet wurde, wird die entsprechend angegebene Callback-Funktion aufgerufen.

Stichwort hier wäre „Ajax“.
__________________
Blog | Buch | Kaloa
mermshaus ist gerade online   Mit Zitat antworten
Alt 10.03.2011, 12:03  
Benutzer
 
Benutzerbild von Teela
 
Registriert seit: 23.03.2008
Beiträge: 30
PHP-Kenntnisse:
Anfänger
Teela befindet sich auf einem aufstrebenden Ast
Standard

Danke für deine Hilfe

Ich habe das map.setCenter jetzt einfach ans Ende der GDownloadUrl function geschrieben, und es funktioniert. War es das, was du mit callback-Funktion gemeint hast, oder wird das generell anders geschrieben?
Teela ist offline   Mit Zitat antworten
Alt 10.03.2011, 12:18  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.725
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Das, was du für den Parameter onload an GDownloadUrl übergibst, nennt man eine Callback-Funktion.
__________________
Blog | Buch | Kaloa
mermshaus ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Google Maps mit Siedbar Ingo71 JavaScript, Ajax und mehr 4 14.01.2011 08:33
[Erledigt] Google Maps Karte auf Marker zentrieren Ingo71 PHP Einsteiger 5 11.01.2011 12:33
Google Maps ohne Geodaten hyps JavaScript, Ajax und mehr 3 31.03.2010 11:20
Google Maps in Google Suchergebnissen J_Jara PHP Tipps 2010 5 16.03.2010 17:44
PreLoader für Google Maps Karten? Blade JavaScript, Ajax und mehr 0 24.02.2010 21:40
Google maps API. Autovervollständigung der Adresse J_Jara JavaScript, Ajax und mehr 1 17.11.2009 12:31
[Erledigt] Marker werden nicht auf Google Maps Karte gezeigt ?! Blade PHP Tipps 2009 3 15.11.2009 22:57
Google Maps - dynamisch Marker setzen zwischen zwei Punkten Maxpumpe JavaScript, Ajax und mehr 2 20.10.2009 21:38
Google Maps Umkreissuche karin PHP Tipps 2009 2 24.08.2009 20:24
Scriptsuche Orte mit Google Maps aus DB anzeigen PCServe Scriptbörse 0 29.03.2009 12:17
Google maps einbinden de_Joerg JavaScript, Ajax und mehr 3 20.09.2008 17:55
Google Maps oder Microsoft Maps als Tool einbinden solitaer PHP-Fortgeschrittene 3 01.07.2008 05:07
Google Maps API cycap HTML, Usability und Barrierefreiheit 5 25.11.2007 15:16
Google Maps statt OpenGeoDB? Plague PHP Tipps 2007 8 18.06.2007 11:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
google maps bounds, google maps marker boundary, markersbounds extend, googlemap zoom-faktor automatisch berechnen, glatlngbounds, google maps center über marker bestimmen, mittelpunkt berechnen google maps, google maps zoomstufe berechnen, googlemaps zoom automatisch, google maps mittelpunkt berechnen, google maps automatisch zoomen, mittelpunkt mit google maps berechnen, google maps -route berechnen, google map 3 boundaries current map, google maps automatische berechnung, html code google map mit berechnugn, mittelpunkt auf karte berechnen, zoom-faktor automatisch berechnen, googlemaps zoomstufe automatisch, google maps mehrere marker center berechnen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum