or


@(Html.Kendo().Map() .Name("map") .Center(39.50, -98.35) .Zoom(3) .Layers(x => { x.Add().Type(MapLayerType.Tile).UrlTemplateId("http://tile.openstreetmap.org/#= zoom #/#= x #/#= y #.png"); x.Add().Type(MapLayerType.Shape) .Style(y => y.Fill(z => z.Color("#000000").Opacity(1))) .DataSource(y => y.GeoJson().Read(z => z.Action(MVC.MyController.Map()))); }) .Events(events => events .ShapeCreated("onShapeCreated") ))<script> function onShapeCreated(e) { alert('shape!'); }</script>public virtual ActionResult Map(){ List<Tuple<double, double>> coordinates = new List<Tuple<double,double>>(){ new Tuple<double, double>(39.50, -98.35), new Tuple<double, double>(30.268107, -97.744821) }; JObject featureCollection = new JObject( new JProperty("type", "FeatureCollection"), new JProperty("features", new JArray( new JObject( new JProperty("type", "Feature"), new JProperty("properties", new JObject()), new JProperty("geometry", new JObject( new JProperty("type", "MultiPoint"), new JProperty("coordinates", coordinates.Select(c => new JArray(c.Item1, c.Item2)).ToArray()) )) ) )) ); ContentResult result = new ContentResult(); result.Content = featureCollection.ToString(); result.ContentType = "application/json"; return result;}{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "MultiPoint", "coordinates": [ [ 39.5, -98.35 ], [ 30.268107, -97.744821 ] ] } } ]}<script> $(document).ready(function () { $("#grid").kendoGrid({ dataSource: { data: itemData(50), pageSize: 12, change: function(e) { var item = e.items[0]; console.log(item.get("gridActionPlan.gridActionPlanID")); } }, height: 475, groupable: true, navigatable: true, sortable: true, filterable: true, resizable: true, columnMenu: true, pageable: true, toolbar: ["save", "cancel"], columns: [ { field: "gridActionPlanID", values: actionPlanValues, title: "Action Plan", width: 200 }, { field: "gridNewRetailSP", title: "New Retail SP", width: 120 }, { field: "gridPercentEffectedStock", title: "% of Effected Stock", width: 150 }, { field: "gridSales", title: "Sales", width: 150 }, { field: "gridNetImpact", title: "Net Impact", width: 150 }], editable: true }); }); function itemData(count) { var data = []; for (var i = 0; i < count; i++) { data.push({ gridActionPlanID : 0, gridActionPlan : { gridActionPlanID : 0, gridActionPlanName : "[Select Action Plan]" }, gridNewRetailSP : 0, gridPercentEffectedStock : 0, gridSales : 0, gridNetImpact : 0 }); } return data; } var actionPlanValues = [{ "value": 0, "text": "[Select Action Plan]" },{ "value": 1, "text": "SP Adjustment / Display" },{ "value": 2, "text": "Clearances" },{ "value": 3, "text": "Return to Supplier" },{ "value": 4, "text": "Inter-Store Transfer" },{ "value": 5, "text": "Seasonal Import or Local" },{ "value": 6, "text": "Bar Code Problem" },{ "value": 7, "text": "Waste" },{ "value": 8, "text": "Stock Problem" },{ "value": 9, "text": "Display Piece" },{ "value": 10, "text": "Color / Size / Range" }];</script>