Создание динамической полилинии с Google Maps и C # .net - PullRequest
1 голос
/ 03 ноября 2011

Я хочу передать значения из VIEWBAG в виде массива LatLons из моей модели в C #. Я не уверен, как динамически зацикливать массив Viewbag и добавлять эти кординаты в мой массив javascript для передачи:

    // Create an instance of Google map
var map = new GMap2(document.getElementById("map"));

// Tell the map where to start
map.setCenter(new GLatLng(59.3324, 17.8857), 9);

// Create an array with points
var points = [
   new GLatLng(59.6919, 17.8582),
   new GLatLng(59.3030, 18.0395),
   new GLatLng(58.9789, 17.5341)
];

// Create a new polyline
var polyline = new GPolyline(points, '#ff0000', 5, 0.7);

// Add the polyline to the map using map.addOverlay()
map.addOverlay(polyline);

Я хочу сделать что-то подобное, но без статического массива.

Заранее спасибо!

EDIT:

В настоящее время у меня есть:

       var points = [];


   @foreach (var item in ViewBag.LatLons)
   {
     <text>
     points.push(new GLatLng(@item.Latitude, @item.Longitude);
     </text>
   }

Но карта Google не будет отображаться при добавлении, однако точки корректно перебираются из данных ViewBag.

1 Ответ

2 голосов
/ 03 ноября 2011

Вместо ViewBag, если бы вы использовали модель представления, вы могли бы использовать что-то вроде следующего:

// Create an array with points
var points = [];
<% foreach (var item in Model.Coords)
   {%>
       points.push(new GLatLng(<%= item.lat %>, <%= item.lng %>));
   <%} %>

, которое должно выводиться в ваше представление как:

var points = [];
points.push(new GLatLng(59.6919, 17.8582));
points.push(new GLatLng(59.3030, 18.0395));
points.push(new GLatLng(58.9789, 17.5341));
//...et cetera

Представление данных по своей сути является объектом и не поддерживает итератор, поэтому вам придется выполнять приведение.Это избавляет от необходимости приведения в представлении, имея типизированную коллекцию.Этот пример может использовать простую модель, подобную этой:

public class CoordsModel 
{
    public List<CoOrd> Coords {get; set;}
}

public class CoOrd 
{
    public decimal lat {get; set;}
    public decimal lng {get; set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...