Ich habe Google Maps, die gut funktionieren, wenn der Standort erkannt werden kann, aber wenn dies nicht möglich ist, wird die Karte nie angezeigt. Was ich tun möchte, ist, wenn der Standort nicht erkannt werden kann, setzen Sie die lat- und lng-Variablen auf die in der Funktion locError. Wie kann das gemacht werden?
hier ist mein Code:
function initializeMap() {
map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 19,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('test'));
}
var pinColor = "6495ED";
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor,
new google.maps.Size(21, 34),
new google.maps.Point(0, 0),
new google.maps.Point(10, 34));
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
new google.maps.Size(40, 37),
new google.maps.Point(0, 0),
new google.maps.Point(12, 35));
function locError(error) {
// the current position could not be located
lat = 53.5409298;
lng = -2.11136590000001;
initializeMap();
setCurrentPosition(position);
}
function setCurrentPosition(position) {
if (position.coords.latitude) {
lat = position.coords.latitude;
lng = position.coords.longitude;
} else {
lat = 53.5409298;
lng = -2.11136590000001;
}
var accuracy = position.coords.accuracy;
currentPositionMarker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(
lat,
lng
),
title: "Current Position",
icon: pinImage,
shadow: pinShadow,
animation: google.maps.Animation.DROP
});
map.panTo(new google.maps.LatLng(
lat,
lng
));
circle = new google.maps.Circle({
map: map,
radius: accuracy,
strokeColor: '#E62C56',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#6495ED',
fillOpacity: 0.10
});
circle.bindTo('center', currentPositionMarker, 'position')
algolia_search(position);
}
function displayAndWatch(position) {
// set current position
setCurrentPosition(position);
// watch position
watchCurrentPosition(position);
}
function watchCurrentPosition(position) {
var positionTimer = navigator.geolocation.watchPosition(
function (position) {
setMarkerPosition(
currentPositionMarker,
position,
)
});
}
function setMarkerPosition(marker, position) {
circle.setRadius(position.coords.accuracy);
marker.setPosition(
new google.maps.LatLng(
lat,
lng)
);
algolia_search(position);
}
function initLocationProcedure() {
initializeMap();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(displayAndWatch, locError);
} else {
displayAndWatch();
locError();
}
}
function clearOverlays() {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers.length = 0;
}
$(document).ready(function () {
initLocationProcedure();
});
Was verursacht das Problem, dass die Karte überhaupt nicht geladen wird, wenn der Standort deaktiviert ist? Wie kann ich die Karte trotzdem laden und an Lat und Lng in der Fehlerfunktion binden, die ausgelöst wird, wenn der Standort nicht gefunden wird?
Ich denke, Sie müssen es so versuchen, wenn sich in Ihrer Schleife keine Position befindet usw.
function initializeMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 19,
center: new google.maps.LatLng(53.5409298,-2.11136590000001),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var lat = 53.5409298;
var lng = -2.11136590000001;
var title = "Test" +" "+"Set";
var latLng = new google.maps.LatLng(lat,lng);
var marker = new google.maps.Marker({
zoom: 12,
position: latLng,
map: map,
title: title
});
}
Ich habe noch eine Sache beobachtet, dass Sie die Mittelposition in Ihrer Karte nicht angegeben haben, daher kann es zu Fehlern kommen.
center: new google.maps.LatLng(53.5409298,-2.11136590000001),
Vielen Dank
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