Показать текущее местоположение android устройства на карте Google после отправки уведомления puish на android
проблема заключается в том, что при нажатии кнопки submit выполняются два метода...первый-контроллером, который отправляет уведомление на android. второй - с помощью функции onclcik javascript, в которой с помощью ajax мы вызываем метод, который показывает нам широту и долготу и показывает их на карте google.
теперь он выполняет первую функцию javascript, а затем отправляет push-уведомление. затем перезагрузите всю страницу. таким образом, карта приходила и уходила по мере загрузки страницы после выполнения функции javascript.
Что я уже пробовал:
в контроллере:
public ActionResult getcurrentlocation()
{
возвращение смотреть();
}
[HttpPost]
public ActionResult getcurrentlocation(FormCollection fc)
{
строка eid = fc ["EmployeeCode"];
строка empid = geteid(eid);
SendNotification(empid, " получить текущее местоположение");
возвращение смотреть();
}
общественного недействительными файл sendnotification(строку идентификатора устройства, строку сообщения)
{
// API-ключ, созданный в проекте Google
строка GoogleAppID = " AIzaSyDBhaDX8sCD9gZOgBA_3vZS4apA1oax_rg";
// Идентификатор проекта, созданный в Google project
var SENDER_ID = ";
//Регистрационный номер создано Android-приложение, т. е. идентификатора устройства
строка regID = deviceId.Отделка();
Servicepointmanager и.ServerCertificateValidationCallback = новый
RemoteCertificateValidationCallback
(
делегат { возвратите True; }
);
Запросы WebRequest запросы WebRequest ;
webRequest = WebRequest.Создать("https://android.googleapis.com/gcm/send");
веб-запрос.Method = " post";
веб-запрос.ContentType = " application/x-www-form-urlencoded;charset=UTF-8";
веб-запрос.Заголовки.Добавить (string.Формат ("Authorization: key={0}", GoogleAppID));
веб-запрос.Заголовки.Добавить (string.Формат ("Sender: id={0}", SENDER_ID));
string postData = строка.Формат("collapse_key=score_update&амп;time_to_live=108&амп;delay_while_idle=0&сбор данных.сообщение={0} &сбор данных.время={1} &амп;ид_регистрации={2}", сообщения, даты и времени.UtcNow, regID, " default");
Byte[] byteArray = Encoding. UTF8.GetBytes(postData);
веб-запрос.ContentLength = byteArray.Длина;
Поток данных поток = запросы WebRequest.Метод getrequeststream();
поток данных.Напишите (byteArray, 0, byteArray.Длина);
поток данных.Закрывать();
Метода webresponse метода webresponse = запросы WebRequest.Творческий();
поток данных = метода webresponse.GetResponseStream();
используя (что streamreader, что streamreader = новый поток streamreader(поток данных))
{
Строка sResponseFromServer = streamReader. ReadToEnd();
что streamreader.Закрывать();
поток данных.Закрывать();
веб-ответ.Закрывать();
}
}
в виду:
<style>#map_canvas { height: 100% }</style> <script language="javascript" type="text/javascript"> </script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="jquery-1.9.1.min.js" type="text/javascript"></script> <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script src="../Scripting/UIBlocker.js"></script> <script src="../Scripting/spin.js"></script> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false"></script> <header class="head"> <h3>Employee Location</h3> </header> <div class="row" id="rr"> <div class="col-lg-6"> @using (Html.BeginForm("getcurrentlocation", "Setup", FormMethod.Post, new { @class = "form-horizontal"})) { @Html.HiddenFor(m=>m.Id) <div class="form-group"> @Html.Label("Employee Code", new { @class = "control-label col-lg-4", }) <div class="col-lg-8"> @Html.TextBoxFor(m => m.EmployeeCode, new { @class = "form-control",@name = "eid",@id = "emp" , @placeholder = "Enter Employee Code." }) </div> @Html.ValidationMessageFor(m => m.EmployeeCode) </div> <div class="col-lg-8"> <input type="submit" id="Add" value="send request" name="Command" class="btn btn-metis-6 btn-sm" /> </div> <br /> } </div></div> <div class="col-lg-8"> <input type="submit" id="kk" value="Get current location" name="Command" onclick="GetEngineerLocation()" class="btn btn-metis-6 btn-sm" /> </div> <div id="map_canvas" style="width: 500px; height: 400px;"></div> <div id="foo"> </div> <div class="col-lg-12"> </div>
function GetEngineerLocation() { //var empId = document.getElementById('ddlEmployeelist').value; var callId = document.getElementById('emp').value; if (callId == undefined || callId == '') { callId = -1; } if (callId != '') { $.ajax({ type: "Post", url: "/MobileApp/Setup/currentlocation", dataType: 'json', data: JSON.stringify({ callId: callId }), contentType: "application/json; charset=utf-8", dataType: "json", success: GetEngineerCurrentLocationSuccess, error: GetEngineerCurrentLocationFail }); } else { alert("Please select employeee") } } function GetEngineerCurrentLocationSuccess(result) { var lat = result.Latitude; var lon = result.Longitude; var time = result.LocationTime; var myLatlng = new google.maps.LatLng(lat, lon) // This is used to center the map to show our markers var mapOptions = { center: myLatlng, zoom: 6, mapTypeId: google.maps.MapTypeId.ROADMAP, marker: true }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); var marker = new google.maps.Marker({ position: myLatlng, title: "lat: " + lat + " long: " + lon + " Time: " + time }); marker.setMap(map); var infowindow = new google.maps.InfoWindow({ content: "<b>User Address</b><br/> Latitude:" + lat + "<br /> Longitude:" + lon + "" }); infowindow.open(map, marker); } function GetEngineerCurrentLocationFail() { alert("fail"); }