Por que o botão “Redefinir para o estado do mapa inicial” foi descartado no Google Maps API V3?

StackOverflow https://stackoverflow.com/questions/3404033

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 ...

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top