Я хочу отобразить KML-файл в Google Maps из моего приложения asp.net MVC 3.Как написать файл kml на общедоступный сервер?
Из API Google Maps JavaScript V3, я использую KmlLayer ('url') для отображения kml в картах google. Я читал, что файл kml должен находиться на общедоступном сервере. Я мог бы отображать файл kml локально с помощью сторонних javascripts, но они могут быть подвержены ошибкам. (Loading a local .kml file using google maps?)
Файлы kml, которые я хочу визуализировать, хранятся в базе данных SQL-сервера в виде массивов байтов. Поэтому для одного файла Kml я должен написать массив байтов в путь с расширением kml. Я сделал это с File.WriteAllBytes (путь, байт), где path = local path и byte = byte array из базы данных. Это делается в контроллере приложения MVC. Это код:
public ActionResult MapView(int id)
{
Incident inc = db.Incidents.Find(id);
if (inc.IncidentDatas.Count != 0)
{
ViewBag.ListKmlUrls = kmlFileStore(inc);
}
return View(inc);
}
public List<string> kmlFileStore(Incident inc)
{
List<string> listKmlUrls = new List<string>();
// Specify a "currently active folder"
string activeDir = @"c:\incident" + inc.incId + @"\incidentData";
//Create a new subfolder under the current active folder
string newPath = System.IO.Path.Combine(activeDir, "kmlFiles");
// Create the subfolder
System.IO.Directory.CreateDirectory(newPath);
String url;
foreach(var d in inc.IncidentDatas) {
url = @"c:\incident" + inc.incId + @"\incidentData\kmlFiles\" + d.id + ".kml";
//dataContent is byte[]
System.IO.File.WriteAllBytes(url, d.dataContent);
listKmlUrls.Add(url);
}
return listKmlUrls;
}
Идея заключается в том, что представление будет получить доступ к списку адресов через viewbag пройти URLs для яваскрипта метода KmlLayer (...). Но здесь есть только локальные пути.
Как приложение MVC может хранить файл kml на общедоступном сервере, чтобы он мог передать URL-адрес KmlLayer (...)? Это необходимо сделать программным путем.
Я в настоящее время получаю доступ к моему приложению MVC и базе данных с localhost. У меня статический Ip и имя. Я также хотел бы опубликовать приложение и базу данных для онлайн-доступа. Не знаете, как это сделать, пожалуйста, дайте мне несколько советов/рекомендаций. Благодарю.
Хорошо, но я хочу, чтобы встроить Google Maps вместо этого. Приложение MVC должно показать простую дорожную карту, которая отображает файл kml. Я не уверен, что открытый слой имеет локальный метод KmlLayer рендеринга. С google earth рендеринг карты медленнее, а также нужен плагин google earth. Пользователи, которые обращаются к приложению MVC в своем браузере, могут не иметь готового плагина ... – Qwerty
Я прочитал об использовании Server.MapPath («~/folder»). Но не знаю, как я могу хранить файл kml на веб-сервере и получить URL-адрес, где он хранится ... Я не хочу, чтобы KML хранился в системе пользователя, обращаясь к приложению MVC. – Qwerty
Это должно быть просто. На основе вашей географической информации создайте файл kml с помощью 'System.IO.File.WriteAllText (путь, содержимое) '. Для чтения вы можете попробовать этот файл StreamReader = новый StreamReader (filePath); var kml = file.ReadToEnd(); ' – Shahdat