Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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">](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](http://maps.google.com/maps?file=api&v=2&key=CHAVE)
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[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/](http://forum.imasters.com.br/public/style_emoticons/)default/ermm.gifexistem exemplos no fórum , pode te ajudar
>
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. :(
você pode jogar num array ou tabela
>
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")
usa o fields
For Each objField In objRecordset.Fields
' Coloque o código aqui para manipular cada item da coleção
Next
>
usa o fields
For Each objField In objRecordset.Fields
' Coloque o código aqui para manipular cada item da coleção
Next
<_<
Esquece...
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
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
que script grotesco pra fazer uma coisa simples
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