Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

elton73ssa

[Resolvido] Google Maps + banco

Recommended Posts

Olá,

 

Corri pelo forum procurando uma solução para retornar os dados cadastrados em meu access em forma de marcadores no mapa.

 

Encontrei uma solução onde exibe o marcador de acordo com os dados cadastrados.

 

O problema é que não estou acertando como implementar um loop para varrer todos os dados do banco e colocar quantos marcadores forem necessários no mesmo mapa...

 

Aqui está o código funcionando, mas só mostra o último registro/marcador:

 

<!-- #include file="gmaps_conexao.asp"-->
<% Session.LCID = 1046 %>

<%


call abre_conectar


strSQL = "SELECT * FROM fatos WHERE status ='publicado'"

Set rstSearch = cnn.Execute(strSQL)

While Not rstSearch.EOF

UrlMapa = rstSearch("cidade")&rstSearch("uf")&rstSearch("pais")
FTexto = rstSearch("texto")


rstSearch.MoveNext
	Wend
	
  

%>
     
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
        <title>Google Maps Javascript API Example</title>
        <script src="http://maps.google.com/maps?file=api&v=2&key=CHAVE
          type="text/javascript"></script>
        <script type="text/javascript">

        //<![CDATA[
var map

var geocoder


  // showLocation() is called when you click on the Search button

    // in the form.  It geocodes the address entered into the form

    // and adds a marker to the map at that location.

    function showLocation() {

      var address = '<%=UrlMapa%>';
	  
	  

      geocoder.getLocations(address, addAddressToMap);

    }
	
		 

function load() {

      map = new GMap2(document.getElementById("map"));

      map.setCenter(new GLatLng(-26.992970522417455,-48.634071350097656), 5);

      geocoder = new GClientGeocoder();

	  map.setMapType(map.getMapTypes()[0]);

	  map.addControl(new GSmallMapControl());

	  map.addControl(new GMapTypeControl());

  

    }

    // addAddressToMap() is called when the geocoder returns an

    // answer.  It adds a marker to the map with an open info window

    // showing the nicely formatted version of the address and the country code.

    function addAddressToMap(response) {

      //map.clearOverlays();

      if (!response || response.Status.code != 200) {

        alert("Endereço incorreto ou inexistente");

      } else {
	  
	    var num_resultados = response.Placemark.length; 
		
		 
   
        place = response.Placemark[0];

        point = new GLatLng(place.Point.coordinates[1],

                            place.Point.coordinates[0]);

        marker = new GMarker(point);

        map.addOverlay(marker);

		  marker.openInfoWindowHtml('<span style="font:11px tahoma;">' + place.address + '<br><br><b>Fato: </b><br><%=FTexto%></span>');

   

      }

    }



	 function findLocation(address) {

      //document.forms[0].q.value = address;

      showLocation();

    }

	

  



function createMarker(point,html) {

  var marker = new GMarker(point);

   GEvent.addListener(marker, "click", function() {

    marker.openInfoWindowHtml(html);
//	marker.openInfoWindowHtml("teste");

  });

  return marker;

}

 
        //]]>
        </script>

  </head>
<body onload="load(); showLocation();"> 

        <div id="map" style="width: 500px; height: 300px"></div>
	
	<%

	call fecha_conectar
    
    Set rstSearch = Nothing
	%> 
  </body>
</html>
http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

While Not rstSearch.EOF

 

UrlMapa = rstSearch("cidade")&rstSearch("uf")&rstSearch("pais")

FTexto = rstSearch("texto")

 

 

rstSearch.MoveNext

Wend

 

 

esse loop so retorna o ultimo mesmo, sempre sobrescreve, o certo seria

 

FTexto = FTexto & rstSearch("texto")

 

 

 

 

 

agora...

 

você retorna que tipo de informação - endereco ou coordenada?

 

mesmo que você aplique a linha correta, o mapa nao vai funcionar

 

 

 

 

eu faria o seguinte, jogaria FTexto em forma de array e dentro do js faria um loop p/ gerar os marcadores

 

 

 

 

 

 

 

na duvida, consulte a documentacao que tem esse tipo de exemplo com array em js - que ao meu ver é o mais simples

Compartilhar este post


Link para o post
Compartilhar em outros sites

existem exemplos no fórum , pode te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

existem exemplos no fórum , pode te ajudar

 

 

Acredito que já olhei os exemplos no forum. Todos os que encontrei buscam um único valor (vindo de um link ou de um campo texto). O que eu gostaria é listar vários valores por endereço.

 

Estou tentando fazer o que o desisto falou; jogar num array e depois dar um loop no javascript.

 

Mas até agora nada. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode jogar num array ou tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode jogar num array ou tabela

 

É... o desisto falou isso. Não manjo muito asp. Estou tentando jogar os registros num array mas só achei um exemplo que mostra todos os campos e não é bem isso que quero.

 

Select Case rstSearch.eof
    Case False
        RSArray = rstSearch.getrows
		
        Numero_de_Campos = Cdbl(UBound(RSArray,1))
        Numero_de_Registros = Cdbl(UBound(RSArray, 2))
		
		
            
            For R = 0 to Numero_de_Registros 
            For F = 0 to Numero_de_Campos
                 Response.Write RSArray(F, R) & "<br> "
	         
            Next
           
        Next

Case True
        Response.Write "Não há registros!"
End Select	

Como faria no codigo acima para que ele mostre apenas alguns registros especificos? Tipo apenas os:

 

rstSearch("nome")

rstSearch("rua")

rstSearch("cidade")

rstSearch("estado")

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o fields

 

For Each objField In objRecordset.Fields
   ' Coloque o código aqui para manipular cada item da coleção
Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos la...

 

1. seu loop fica como esta

 

2. FTexto = rstSearch("texto") muda pra ==> lat_lng[cont] = lat_lng[cont] & rstSearch("texto")

 

3. o loop do asp gerou uma array em js, agora vem o js

 

 

 

 

o problema...

 

como vem seu valor??? ja vem a coordenada ou é por endereço???

 

agora vi s forma que você faz

 

você pode jogar na array o seguinte - rs("estado")&","&rs("cidade")&","&rs("rua")

 

 

 

 

essa forma esta correta tb, mas pra isso você precisa usar o js do mapa correto, este que você usa se nao me engano, so funciona bem p/ coordenadas

 

 

 

 

 

for( var i = 0 ; i < <%=cont%> ; i++ ){

 

//aqui vem o bloco que monta o pointer do mapa

 

}

 

 

 

 

o cont é apenas um contador que vai informar qts pontos o mapa pera e servr como gui p/ array do js

 

ficou mais facil de entender?

 

tente por em pratica, se nao der eu tento achar um exemplo que tenho

 

 

 

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não foi.

 

 

Mas acabei resolvendo com um script que vi por aqui.

 

Foi só arrumar o que faltava no post original e inserir as chamadas dentro do while asp.

 

 

Fica aqui pra quem encontrar a mesma dificuldade. LINK

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.