2010-06-08 3 views
0

Je sais qu'il y a quelques sujets à ce sujet, mais je semble me frayer un chemin sans résultat. J'essaie d'utiliser un contrôleur pour renvoyer les résultats JSON à mes fonctions Bing Maps.Comment puis-je utiliser un JSONResult RESTful de mon contrôleur pour remplir Bing Maps Geocoding?

Voici ce que j'ai pour mon contrôleur (oui, il est bien de retour des données JSON.

Function Regions() As JsonResult 
    Dim rj As New List(Of RtnJson)() 
    rj.Add(New RtnJson("135 Bow Meadows Drive, Cochrane, Alberta", "desc", "title")) 
    rj.Add(New RtnJson("12 Bowridge Dr NW, Calgary, Alberta, Canada", "desc2", "title2")) 

    Return Json(rj, JsonRequestBehavior.AllowGet) 
End Function 

Puis dans mon script que j'ai, mais il ne fonctionne pas.

<script type="text/javascript"> 
    var map = null; 
    var centerLat = 51.045 ;  
    var centerLon = -114.05722; 

    var path = "<%: Url.Action("GetRegions", "Regions")%>"; 


    function LoadMap() { 
     map = new VEMap('bingMap'); 
     map.LoadMap(new VELatLong(centerLat, centerLon), 10); 
      $.getJSON(path, function(json){ 
       $.each(json, function(){ 
        alert(this.address); // the alert message is "undefined" 
        StartGeocoding(this.address, this.title, this.description); 
       }); 
      }); 
    } 

    function StartGeocoding(address, title, desc) { 
     map.Find(null, // what 
      address, // where 
      null, // VEFindType (always VEFindType.Businesses) 
      null, // VEShapeLayer (base by default) 
      null, // start index for results (0 by default) 
      null, // max number of results (default is 10) 
      null, // show results? (default is true) 
      null, // create pushpin for what results? (ignored since what is null) 
      true, // use default disambiguation? (default is true) 
      false, // set best map view? (default is true) 
      GeocodeCallback); // call back function 
    } 

    function GeocodeCallback(shapeLayer, findResults, places, moreResults, errorMsg) { 

     var bestPlace = places[0]; 

     // Add pushpin to the *best* place 
     var location = bestPlace.LatLong; 

     var newShape = new VEShape(VEShapeType.Pushpin, location); 

     var desc = "Latitude: " + location.Latitude + "<br>Longitude:" + location.Longitude; 
     newShape.SetDescription(desc); 
     newShape.SetTitle(bestPlace.Name); 
     map.AddShape(newShape); 
    } 

    $(document).ready(function() { 
     LoadMap(); 
    }); 

</script> 

Répondre

0

sacrément bien.

se trouve que j'utilisais this.address quand je l'ai utilisé this.Address. Peut pas croire que j'ai raté.

+0

Mon problème était que j'ai créé des variables privées comme '_address' et utilisé ReSharper pour créer mes propriétés ... ReSharper a automatiquement capitalisé les propriétés. –

Questions connexes