2013-03-25 2 views
1

Я новичок в mvc и jquery. Я хочу заменить места, заменив их несколькими городами в базе данных. Мне было интересно, как я это сделал.mvc4: передача информации о местоположении в переменную javascript для геолокаций

function initialize() { 

    var locations = [ 
     ['Hougang', 1.37265, 103.893658], 
     ['Punggol', 1.400617, 103.907833], 
     ['MacRitchie Reservoir', 1.346002, 103.825436], 
     ['Bishan', 1.352051, 103.849125], 
     ['Sentosa', 1.251226, 103.830757] 
     ]; 

    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 0, 
     center: new google.maps.LatLng(1.37265, 103.893658), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var infowindow = new google.maps.InfoWindow(); 

    var marker, i; 

    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       infowindow.setContent(locations[i][0]); 
       infowindow.open(map, marker); 
      } 
     })(marker, i)); 
    } 

    // Check if user support geo-location 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position) { 
      var latitude = position.coords.latitude; 
      var longitude = position.coords.longitude; 
      var geolocpoint = new google.maps.LatLng(latitude, longitude); 

      var mapOptions = { 
       zoom: 8, 
       center: geolocpoint, 
       mapTypeId: google.maps.MapTypeId.HYBRID 
      } 
      // Place a marker 
      var geolocation = new google.maps.Marker({ 
       position: geolocpoint, 
       map: map, 
       title: 'Your geolocation', 
       icon: 'http://labs.google.com/ridefinder/images/mm_20_green.png' 
      }); 
     }); 
    } 
} 
google.maps.event.addDomListener(window, 'load', initialize); 


</script> 

Будет ли это что-то в этих строках?, Проблема в том, что я понятия не имею, как соединить эти два.

public JsonResult Autolocations() 
     { 
      var locations = from s in db.Tble_content 
           select s.EN_Title; 
      // return namelist.ToList(); 
      return Json(locations, JsonRequestBehavior.AllowGet); 
     } 

Большое спасибо заранее Hesh

ответ

1

Вы должны использовать Ajax для подключения контроллера с тем, что-то вроде этого

$(document).ready(function() { 

    $.getJSON("/Locations/Autolocations", null, function (locations) { 
      initialize(locations); 
    }); 
}); 

function initialize(locations) { 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 0, 
     center: new google.maps.LatLng(1.37265, 103.893658), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    //the rest of your javascript code 
} 

И ваш контроллер должен что-то вроде этого

public class LocationsController : Controller  
{ 
    public JsonResult Autolocations() 
    { 
     var locations = from s in db.Tble_content 
          select s; 
     return Json(locations.ToList(), JsonRequestBehavior.AllowGet); 
    } 
} 
+0

Hi DZL Жаль, что я не вернулся раньше, это gre при попытке, но я получаю сообщение об ошибке в javascript msg box, говорящем о [object Object], [object Object] ... знаете ли вы, почему? , но еще раз спасибо за это – hesh

+0

Я думаю, ваша проблема заключается в использовании мест [i] [1]. Я бы использовал адреса [i] .lat вместо индекса, и вашему действию контроллера нужно было бы вернуть объекты местоположения, содержащие свойство lat. Можете ли вы опубликовать строку javascript, которая вызывает ошибку? –

+0

Привет Извините, DZL - я решил проблему, добавив имена полей sql position: new google.maps.LatLng (местоположения [i] ["slatitude"], местоположения [i] ["slongitude"]), ... это выполнило эту работу. Большое спасибо за вашу помощь. Hesh – hesh

Смежные вопросы