Ajuda API Google Maps

Galera, boa Tarde.

Preciso de uma luz, talvez alguém consiga me ajudar.
Estou com um problema.

Tenho duas funções em um HTML simples, loadTxt e a initialize.

Basicamente importo um arquivo de texto, jogo em um array e o mesmo deveria ser passado para o initialize e carregar os pontos através do googleMaps.

Quando executo pelo IE, funciona, porem no chrome não, mas todos os arrays estão carregados, pelo que pude perceber ele executa as functions do maps antes da função.

O estranho é que quando eu depuro o fonte, ele funciona no Chrome e no FF, mas sem depurar não.

O que posso fazer a respeito?

Segue o link com o fonte:
http://jsfiddle.net/tD4ZY/

O formato do txt é o seguinte:

LUGAR 01,-30.0248847,-51.2039979
LUGAR 02,-31.77678,-52.3428474
LUGAR 03,-15.6066938,-56.1232527
LUGAR 04,-15.8396389,-48.0396031
LUGAR 05,-15.8389927,-48.0551756

Obrigado.

Na console não apresenta nada?

Talvez o script esta sendo executado antes dos carregamentos das “libs js”, tente executar depois do load.

Um teste, coloca todo o código dentro :
jQuery(document).ready(function() {

});

Obs.: coloca o jquery temporário


Adriano de Souza Barbosa
http://hpesca.com.br

Adriano,

Não, no chrome ele não carrega, as vezes quando fico apertando F5 ou CRTL+R ele carrega. Mas é só dar um F5 que some tudo novamente.

Tentei o que você disse, mas não surtiu efeito.

Ou fiz de maneira errada.

Obrigado.

[quote=AdrianoSB]Na console não apresenta nada?

Talvez o script esta sendo executado antes dos carregamentos das “libs js”, tente executar depois do load.

Um teste, coloca todo o código dentro :
jQuery(document).ready(function() {

});

Obs.: coloca o jquery temporário


Adriano de Souza Barbosa
http://hpesca.com.br

[/quote]

Tenta descobrir aonde que o JavaScript esta parando, coloca uns alert…


Adriano de Souza Barbosa
http://hpesca.com.br

Adriano,

Este é o detalhe, ele não da erro, está executando 100%…

Quando eu depuro o código pelo Chrome (F12), ele simplesmente funciona.

Mas vou por alguns outros Alerts aqui para monitorar, se existe algum lugar que ele não esteja passando…

É estranho, não consigo entender pq a vezes funciona e as vezes não.
No IE não acontece isto.

Muito estranho.

Vou testar e ja digo o resultado.

Coloquei ALERT nos pontos principais.

Antes de cada passo importante… Seguindo o fluxo lógico.

E ele carrega.
o.0

Acho que preciso colocar algum tipo de Time Delay, não consigo pensar em nada mais lógico.

Monitorei o TimeLine da carga dos objetos, ele carrega todos os .js e depois o arquivo texto, em seguida os arrays, em tese deveria funcionar.
Não entendo…

Nem o Mapa mostra? Ou só não mostra os pontos?


Adriano de Souza Barbosa
http://hpesca.com.br

Adriano,

Não estava mostrando os pontos. O mapa carrega normal.

Mas acredito que estou perto de resolver o problema, coloquei um timeOut, e agora ele carrega os pontos.

Fiz o seguinte:

[code]var teste = window.setTimeout(“initialize()”,150);

//alert(“DOM LISTENER GOOGLE”);
google.maps.event.addDomListener(window, ‘load’, teste); [/code]

Mas preciso fazer um timeOut genérico, pra chegar nesse ponto e parar um pouco independente da função.

Além de que no IE, ele executa normal, mas da uma incompatibilidade com a API do google.

Da este alerta
Mensagem: O objeto não dá suporte para a propriedade ou método
Linha: 22
Caractere: 103
Código: 0
URI: http://maps.gstatic.com/intl/pt_br/mapfiles/api-3/10/18/main.js

No Chrome não, nem no FF…
Mas está executando.

Se não der certo avise.


Adriano de Souza Barbosa
http://hpesca.com.br

Éééééé…

Só funcionou assim…

Ou assim:

[code]var teste = window.setTimeout(“initialize()”,150);

google.maps.event.addDomListener(window, ‘load’, teste); [/code]

Mas no FF e no IE dá esse erro:

NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 1 [nsIDOMEventTarget.addEventListener]
@ http://maps.gstatic.com/intl/en_us/mapfiles/api-3/10/18/main.js:19

Mas carregam o conteúdo normal…

Fiz uma função de Sleep… mas não funcionou…

Faz um teste ai
Troque :

google.maps.event.addDomListener(window, 'load', window.setTimeout('initialize()',150)); 

Por:

jQuery(document).ready(function() {
    initialize();
    // se não der certo, tente:
    //window.setTimeout('initialize()',150);
}); 


Adriano de Souza Barbosa
http://hpesca.com.br

Fechoooooo…

Executou usando assim:

[code]jQuery(document).ready(function() {

window.setTimeout('initialize()',150);  

}); [/code]

\o/

Eu vi por cima, mas acho que o teu problema é pq você tem dois serviços assíncronos: carregar o mapa e carregar os dados via ajax.

O mapa você deve carregar no onload, como fez, mas os layers sobre o mapa, você não pode garantir que já foram carregados na outra requisição.

Acho que o ideal seria criar uma função que testasse se o mapa foi carregado e as localizações recebidas. Você chama esta função tanto no onready do ajax qto após o onLoad do mapa, mas ela só executa se tudo tiver sido carregado.

Aí não precisaria deste timeout.

Wagner,

Obrigado pela resposta.

Hmmmm acho que entendi.

Vou tentar mudar o código para fazer desta maneira, para praticar, sou novo neste mundo dos JavaScripts…

Conforme eu for evoluindo vou postando aqui, para pegar mais dicas com os colegas.

Por hora, obrigado a todos.