Ciao Moreno e ciao a tutti,
praticamente quello che voglio ottenere è una mappa con dei markers , centrata sulla mia attuale posizione. (ci tengo a dire che è un esercitazione quindi forse ho preso un argomento difficile ma ci sono diversi punti dentro che vorrei capire come risolvere)
I markers li tiro fuori dal mio db.
Fino a che centro la mappa e tiro fuori i punti sul page_load senza eseguire nessuna where al database è tutto ok.
Quello che ora sto provando a fare è passare al database le mie coordinate per filtrare solo i markers vicino a me.
Per fare questo dovrei passare al page_load le mie coordinate, dico al page_laod perchè attualmente io li dentro ho riempito il repeater.
Per avere le coordinate però c'è bisongo che il browser me le passi, e questo avviene purtroppo solo al caricamento della pagina.
Quindi ho pensato di :
1) prendere le coordinate del browser
2) richiamare una funnzione c# che prende le coordinate, esegue la where e popola il repeater (che mi pare di capire posso chimare solo su un click di un button
3) lanciare una funzione js per mostrare la mappa con le mie coordiante e i markers
Come puoi vedere dallo script qui sotto all'interno del javascript ho inserito il repeater quindi quando richiamo cliccaTastoCaricaDati clicco virtualmente sul button che lancia la mia funzione c# per popolarlo.
Il problema e che il button genera un submit che quindi ricarica la pagina e riparte il tutto andando a creare un ciclo infinito
Spero di essere stato più chiaro, come detto....onestamente non so se nella pratica è fattibile eseguire questi passaggi...questo è il motivo principale perchè sto facendo degli esercizi di questo tipo
Grazie
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&key=AIzaSyAELIzBDp8lDdOhkIoUQ994I82K85mulWc"></script>
<script type="text/javascript">
var markers = [
<asp:Repeater runat="server" ID="rptMarkers">
<ItemTemplate>
{
"title": "<%# Eval("indirizzo") %>",
"lat": "<%# Eval("lat") %>",
"lng": "<%# Eval("long") %>",
"description": "<%# Eval("indirizzo") %><img src='/fossi-buchi/<%# Eval("nomeFile") %>'>"
}
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>
]
</script>
<script type="text/javascript">
function Geolocalizza()
{
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(mia_posizione,error_callback, { enableHighAccuracy: false });
}else{
alert('La geo-localizzazione NON è possibile');
}
}
var lat,lon
function mia_posizione(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
origine=lat +","+lon
alert(lat + "" + lon)
document.getElementById("LatitudineClient").value = lat
document.getElementById("LongitudineClient").value = lon
/////// chiamo una funzione che mi preme il tasto sul quale ho il popolamento del repater
cliccaTastoCaricaDati();
}
function error_callback(){
}
function cliccaTastoCaricaDati()
{
alert("tasto carica dati")
document.getElementById("Button1").click();
alert("dati caricati")
}
function CreaMappa()
{
alert("creo mappa")
var mapOptions = {
center: new google.maps.LatLng(lat,lon),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);
for (i = 0; i < markers.length; i++) {
var data = markers[i]
var myLatlng = new google.maps.LatLng(data.lat, data.lng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: data.title
});
(function (marker, data) {
google.maps.event.addListener(marker, "click", function (e) {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
});
})(marker, data);
}
}
///////// qui inizio tutto prendendo le coordinate del browser
Geolocalizza()
</script>