Odpowiedź przez Przeciek pamięci nie działa we wszystkich przypadkach, ponieważ w niektórych poziomach powiększenia „m” jest stosowany zamiast "km ", wymagający leczenia RegExp (a jego rozwiązanie wymaga jQuery). Udało mi się znaleźć rozwiązanie Xion Dark do pracy po rozszerzeniu RegExp do (m | km) i zmianie na innerHTML - użycie innerText nie działało dla mnie w Firefoksie (i może wyjaśnić, dlaczego James Bell nie mógł uzyskać tej odpowiedzi do pracy).
Moja kompletne rozwiązanie (gdzie mam hard-wired wymagana mapa id "map_canvas")
var scaleInterval = setInterval(function() {
var spn = document.getElementById('map_canvas').getElementsByTagName('span');
var pattern = /\d+\s+(m|km)/i;
for(var i in spn) {
if (pattern.test(spn[i].innerHTML)) {
spn[i].click();
clearInterval(scaleInterval);
}
}
}, 500);
setTimeout(function() { clearInterval(scaleInterval) }, 20000);
To działa w Firefoksie i Chrome 31 37 oraz IE 10. setTimeout jest włączone, aby zapobiec to działa w nieskończoność, ponieważ jest to rodzaj kludge i może przestać działać, gdyby GM zmienił swoją skalę html - i na wypadek, gdyby jednostki skali mogły pewnego dnia rozpoczynać się od pożądanych jednostek ft/mi zamiast aktualnych jednostek metrycznych.
Uwaga: przy pierwszym testowaniu z IE 10 jako białym pudełkiem pojawiło się w obszarze skali. Najpierw myślałem, że to z powodu mojego kodu, ale to samo miało miejsce, gdy usunąłem kod. W końcu stwierdziłem, że było to spowodowane "Widok zgodności" (emulator IE 7, którego nie znałem, ponieważ rzadko używam IE), który został przypadkowo włączony - dla którego pasek skali nie wyświetla się poprawnie. Używając IE 10 w trybie "standardowym", skala GM wyświetliła się poprawnie (a mój kod zadziałał).Po prostu chciał ostrzec innych, bez większego doświadczenia IE, który może działać na tej samej rzeczy i się mylić, jak byłem
nie jestem pewien, że można mieć obciążenie mapy ze skalą przedstawioną na jednostkach imperialnych w odświeżeniu wizualnej w tym czasie. Kliknięcie na kontrolkę skali zmieni się z mil na kilometry. –
Czy istnieje obejście, na przykład wywołanie tego samego procesu, który jest wywoływany, gdy zostanie kliknięty? A może nawet symulować kliknięcie myszą na skali? –