Mein Store Locator ist so eingestellt, dass er sich auf den aktuellen Standort des Benutzers zentriert, aber wie kann ich ihn auf einen Standort als Standard festlegen, wenn der Benutzer nicht zulässt, dass sein Standort bekannt ist? Der Code in der else-Anweisung funktioniert nicht, aber ich bin mir nicht sicher, warum. Hier ist was ich habe:
google.maps.event.addDomListener(window, 'load', function() {
(function() {
if(!!navigator.geolocation) {
var map;
var mapOptions = {
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
navigator.geolocation.getCurrentPosition(function(position) {
var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(geolocate);
});
} else {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(37.7749, -122.4194),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
}
var panelDiv = document.getElementById('panel');
var data = new MedicareDataSource;
var view = new storeLocator.View(map, data, {
geolocation: false,
features: data.getFeatures()
});
new storeLocator.Panel(panelDiv, {
view: view
});
})();
});
Der Code im else funktioniert nicht, weil er nie ausgeführt wird ( !!navigator.geolocation
ist true). Wenn geolocation
verfügbar ist, aber ein Fehler auftritt, wird die error
Funktion aufgerufen, aber Sie haben keine definiert.
Die Methode getCurrentPosition ist definiert als (aus der Dokumentation ):
navigator.geolocation.getCurrentPosition(success[, error[, options]])
Parameter
success - Eine Callback-Funktion, die ein Positionsobjekt als einzigen Eingabeparameter verwendet.
error – Optional – Eine optionale Callback-Funktion, die ein PositionError-Objekt als einzigen Eingabeparameter verwendet.
options – Optional – Ein optionales PositionOptions-Objekt.
Fügen Sie eine Fehlerfunktion hinzu, um den Mittelpunkt der Karte festzulegen:
function error(err) {
console.log('ERROR('+err.code+'): '+err.message);
if (map && map.setCenter) map.setCenter(new google.maps.LatLng(37.7749, -122.4194))
};
Fügen Sie es dann dem .getCurrentPosition
Anruf hinzu:
navigator.geolocation.getCurrentPosition(function(position) {
var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(geolocate);
}, error);
Proof of Concept Geige (https: funktioniert)
Proof of Concept Geige (http: scheitert an unsicherer Herkunft)
Code-Auszug:
var map;
function error(err) {
console.log('ERROR(' + err.code + '): ' + err.message);
if (map && map.setCenter) map.setCenter(new google.maps.LatLng(37.7749, -122.4194))
};
google.maps.event.addDomListener(window, 'load', function() {
if (!!navigator.geolocation) {
var mapOptions = {
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
navigator.geolocation.getCurrentPosition(function(position) {
var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(geolocate);
}, error);
} else {
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(37.7749, -122.4194),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
}
});
html,
body,
#map-canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map-canvas"></div>
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen