Por que o botão “Redefinir para o estado do mapa inicial” foi descartado no Google Maps API V3?
-
25-09-2019 - |
Pergunta
Gostaria de saber se sabemos por que o botão / funcionalidade "Redefinir para o mapa inicial" parece ter sido descartado no Google Maps API V3?
Na API V2, o botão de mão no meio dos botões de seta era uma espécie de botão "home" ou "redefinir" que retomou o mapa para sua posição inicial e nível de zoom.
Não é o fim do mundo, é claro, apenas curioso ...
Solução
Eu acho que, porque é bastante fácil para o desenvolvedor fazer a si mesmos e não era um recurso muito usado, então eles provavelmente decidiram não pesar todos com código que apenas alguns estavam usando.
O que você pode fazer é adicionar um controle personalizado na página e, quando o usuário clicar nele, mova o mapa de volta para o zoom e o centro que você deseja. Uma maneira de coletar isso pode ser ouvir o evento 'Idle' do mapa e definir um tempo limite para armazenar apenas a posição do mapa depois de não ter sido intocado por X segundos. Claro que isso não se parecerá com a versão V2 :)
Outras dicas
Aqui está um pequeno hack para fazer o botão de redefinição funciona no V3. Eu uso o jQuery aqui.
var attachEventToResetButton;
// Attach event to the reset button
var attachResetEvent = function(){
var $resetImg = $('img[src*=mapcontrols3d6.png]');
// We have to check if the image is available yet.
// The reason is although the map has been loaded, the navigation might
// take some time to load and we don't know when it will be fully loaded.
// There doesn't seem to have an event for "Navigation loaded" in the API
// So here is a way to work around
if ($resetImg.length > 0)
{
$resetImg.css('cursor', 'pointer').attr('title', 'Return to center').click(function(){
alert('Clicked on reset button');
// Put your code to reset the map here. For example:
//map.setMapTypeId(MAP_TYPE_ID);
//map.setCenter(new google.maps.LatLng(LAT, LNG));
//map.setZoom(ZOOM_LEVEL);
});
window.clearInterval(attachEventToResetButton);
}
}
// Periodically checking to attach event to the reset button
attachEventToResetButton = window.setInterval(attachResetEvent, 500);
O que eu fiz foi, noto que o nome do arquivo de imagem é 'mapcontrols3d6.png'. Então eu defino um intervalo para verificar se essa imagem foi carregada (ou seja, disponível) ainda. Se sim, eu anexo uma função a ela.
Como este é um hack, ele tem algum problema. O principal é que precisamos confiar no nome do arquivo de imagem de redefinição. Portanto, a Cruz de dedos que o Google não atualizará isso.
Alguém tem alguma maneira melhor?