Ich baue eine Website, die Geolocation-Code verwenden, Es wird angenommen, dass mapCanvas und nach dem Klicken auf "Finde mich!" Klicken Sie auf die Schaltfläche, um den Standort zu bestimmen und die Mitte einer Karte basierend auf dem Standort des Benutzers festzulegen. Es funktioniert gut mit Firefox, Chrome, Safari, getestet auf normalen PC und iPhone das einzige Gerät funktioniert nicht mit jedem Handy mit Android. Hier ist ein Code:Android-Browser funktioniert nicht mit Geolocation
<script src="http://maps.google.com/maps?file=api&v=3&key=YourKey"
type="text/javascript"></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(17, 25);
iconBlue.shadowSize = new GSize(1, 1);
iconBlue.iconAnchor = new GPoint(6, 20);
iconBlue.infoWindowAnchor = new GPoint(5, 1);
var iconRed = new GIcon();
iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconRed.iconSize = new GSize(17, 25);
iconRed.shadowSize = new GSize(1, 1);
iconRed.iconAnchor = new GPoint(6, 20);
iconRed.infoWindowAnchor = new GPoint(5, 1);
var customIcons = [];
customIcons["restaurant"] = iconBlue;
customIcons["bar"] = iconRed;
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(50.061795,19.936924), 16);
// Change this depending on the name of your PHP file
GDownloadUrl("Your_xml.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
}
});
}
}
function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
//]]>
function findLoc(){
if (!navigator.geolocation) {
alert('Sorry, your browser does not support Geo Services');
}
else {
// Get the current location
navigator.geolocation.getCurrentPosition(showMap);
}
}
function showMap(position){
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var myPoint = new GLatLng(lat, lon);
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(myPoint, 15);
GDownloadUrl("Your_xml.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
}
});
function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
}
Ich konnte keine Lösung finden, damit es funktioniert. PS Es gibt keine Fehler oder Anweisungen, die einen Hinweis geben, der es verständlicher macht. Gerät wurde mit GPS aktiviert. pleases help Ich habe versucht, es für 2 Wochen herauszufinden
thx für Antwort habe ich eine Benachrichtigung hinzugefügt ('Erfolg!') Kurz vor navigator.geolocation.getCurrentPosition (showMap); und es zeigt mir meinen Erfolg! das bedeutet, dass diese Funktion findLoc ausgelöst wurde, ist etwas mit ShowMap Funktion falsch, aber ich weiß nicht, was –
@TomLiland: Richtig. Jetzt gehst du damit weiter, bis du herausfindest, welcher Teil des Codes tatsächlich fehlschlägt. Zuerst informiert Sie eine Warnung am Anfang von 'showMap', ob diese Funktion tatsächlich aufgerufen wird. Und so weiter; das allgemeine Prinzip sollte jetzt klar sein. – chaos
Es scheint, dass etwas mit navigator.geolocation.getCurrentPosition (showMap) nicht in Ordnung ist, das wurde nicht aufgerufen, nachdem die Funktion findLock gestartet wurde. Ich habe direkt nach dem Navigator eine Warnung ausgegeben und die Nachricht wurde nicht angezeigt. Auf dem iPhone habe ich die ganze Nachricht bekommen. Seltsames kleines Ding :( –