مکان یابی با استفاده از طول و عرض جغرافیایی در MVC
شنبه 25 اردیبهشت 1395در این مقاله قصد داریم با استفاده از طول و عرض جغرافیایی و نقشه شهری در ASP.NET MVC موقعیت مورد نظر را مکان یابی کنیم.در اینجا از JsonResult و Ajax استفاده میکنیم.
معرفی
با کلیک کردن در محل مورد نظر جزییات محل به کاربر نمایش داده میشود . از روش JsonResult و Ajax استفاده میکنیم.
پيش نياز
ویندوز 7 یا بالاتر
SQL Server 2012یا بالاتر
ASP.NET MVC 5 فریمورک بالا
مراحل
1. ایجاد یک جدول برای موارد زیر:
2. یک پروژه جدیدMVC ایجاد کرده و نام آن را WebApplication میگذاریم.
3. روی پوشه مدل راست کلیک کنید و یک آیتم جدید ایجاد کنید و ADO.NET Entity Data model را انتخاب کنید . نامی برای آن انتخاب و سپس روی EF Designer From Data کلیک کنید
جدول داده شده انتخاب کرده و Finish کلیک کنید و edmx ایجاد می شود.
اتصال خودکار تولید شده ، edmx از دیتابیس ایجاد میکند.
کد زیر را در کنترلر مینویسیم.
using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using WebApplication1.Models; namespace WebApplication1.Controllers { public class MapsController : Controller { private test2Entities db = new test2Entities(); // GET: Maps public ActionResult Index() { return View(db.Maps.ToList()); } #region [Map] [HttpPost] public JsonResult GetMap() { var data1 = Map(); return Json(data1, JsonRequestBehavior.AllowGet); } public IEnumerable<Map> Map() { return (from p in db.Maps select new { Name = p.Name, Latitude = p.Latitude, Longitude = p.Longitude, Location = p.Location, Description = p.Description, Id = p.Id }).ToList() .Select(res => new Map { Name = res.Name, Latitude = res.Latitude, Longitude = res.Longitude, Location = res.Location, Description = res.Description, Id = res.Id }); } #endregion } }
IEnumerable لیستی از مقادیر جدول دریافت میکند . کوئری Select مقادیر و JsonResult post data برای درخواست AJAX با استفاده از HttpPost keyword برمیگرداند.
View
رفرنسهای زیر را که برای JS و CSS است در صفحه وارد میکنیم.
<link rel="stylesheet" type="text/css" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" /> <script type='text/javascript' src='http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js?2'></script> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
تگ div نقشه
<div id="map" style="height: 440px; border: 1px solid #AAA;"></div>
کد کامل
@model IEnumerable<WebApplication1.Models.Map> @{ Layout = null; } <link rel="stylesheet" type="text/css" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" /> <script type='text/javascript' src='http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js?2'></script> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <div id="map" style="height: 440px; border: 1px solid #AAA;"></div> <script type="text/javascript"> $(document).ready(function () { var map = L.map('map', { center: [10.1102278, 77.8958904], minZoom: 4, zoom: 6 }); $.ajax({ type: "POST", url: '/Maps/GetMap', success: function (data) { var result = JSON.stringify(data); for (var i = 0; i < result.length; ++i) { var popup ='<b>Name:</b> '+ data[i].Name + '<br/><b>Latitude:</b> ' + data[i].Latitude + '<br/><b>Longitude:</b> ' + data[i].Longitude+ '<br/><b>Location:</b> ' + data[i].Location; L.marker([data[i].Latitude, data[i].Longitude]) .bindPopup(popup) .addTo(map); } }, error: function (xhr) { console.log(xhr.responseText); alert("Error has occurred.."); } }); L.tileLayer('http://{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', { attribution: '© <a href="http://osm.org/copyright" title="OpenStreetMap" target="_blank">OpenStreetMap</a> contributors | Tiles Courtesy of <a href="http://www.mapquest.com/" title="MapQuest" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png" width="16" height="16">', subdomains: ['otile1', 'otile2', 'otile3', 'otile4'] }).addTo(map); }); </script>
Div .5 با id ="map از توابع زیر برای نشان دادن نقشه است . این نقشه به طور پیش فرض دارای عرض و طول جغرافیایی با استفاده از کلمه centerkey، کاربر می تواند سطح زوم را نیز تغییر دهد.
6. متد Ajax طول و عرض جغرافیایی را بازیابی میکند و مقدار بازیابی شده از نقشه و جزئیات کاربر را با کلیک بر روی این نشانگر با استفاده از نشانگر ومتد bind popup ، نشان میدهد.
خروجی
آموزش asp.net mvc
- ASP.net MVC
- 5k بازدید
- 6 تشکر