ASP.net Google Maps - PullRequest
       4

ASP.net Google Maps

1 голос
/ 15 января 2012

Я пытаюсь добавить карту Google в div на дочерней странице ASP .Net (у нее есть главная страница).Кажется, что информация о карте загружается из Google - но я ничего не вижу.Когда я нажимаю F12 в Chrome, я вижу, что мой div заполнен множеством других div-ов и данных о карте.

Есть идеи, почему карта невидима?я вызываю функцию initialize, добавляя ее в качестве атрибута onload тела главной страницы следующим образом:

 public partial class Contact : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            HtmlGenericControl myBody = (HtmlGenericControl)Master.FindControl("myBody");
            myBody.Attributes.Add("onload", "initialize()");
        }
    }

Большое спасибо

Роб.

Ответы [ 4 ]

1 голос
/ 30 сентября 2016

На главной странице вы должны установить идентификатор "myBody" и запустить "server" в теге.

0 голосов
/ 15 января 2012

Во-первых, похоже, что вы используете версию 2 API, в которой есть ваш ключ .. Вам не нужно это для версии 3. Во-вторых, я использую JQuery для вызова инициализации вместо добавления атрибутов в коде позади, просто кажется глючными я боролся с этим и заставил его работать некоторое время назад.

Попробуйте вот так (у меня есть локальная ссылка на JQuery, настройте при необходимости)

<script src="js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
    $(function () {
        initialize();
    });


    function initialize() {
        var myOptions = {
            center: new google.maps.LatLng(-34.397, 150.644),
            zoom: 8,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
        alert("alert " + document.getElementById("map_canvas"));
    }
</script>

Кроме того, в css явно установленовысота / ширина для map_canvas:

#map_canvas
{
    width: 300px;
    height: 265px;
    border:1px solid #C3C8BD;
    border-radius:5px;
    -o-border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}
0 голосов
/ 26 декабря 2013

В веб-формах , чтобы получить видимую карту, мне всегда приходилось оба звонить initialize() и явно установите ширину и высоту элемента map_canvas div в количество пикселей. Вы можете проверить, что проценты приводят к тому, что высота div карты равна 0 px, изучая div с помощью инструментов разработчика F12 или Firebug.

Этот код показывает div карты, который изменяется по мере изменения размера браузера. Обратите внимание, что javascript помещается в файлы, на которые ссылается "~/bundles/gmaps".

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testme.aspx.cs" Inherits="drawingTools.testme" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript"
        src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing"></script>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server">
        <%: System.Web.Optimization.Scripts.Render("~/bundles/gmaps") %>
        <script type="text/javascript">
            google.maps.event.addDomListener(window, 'load', myPageLoad);
        </script>
    </asp:PlaceHolder>
</head>
<body>
    <form runat="server">        
        <div id="map_canvas" class="map_canvas" >
        </div>
    </form>
</body>
</html>

В aspx код google.maps.event.addDomListener(window, 'load', pageLoad); служит для вызова функции myPageLoad при загрузке окна. Или используйте функцию JQuery $(document).ready, чтобы дождаться готовности документа для инициализации карт Google.

function myPageLoad() {
    resize();  
    initialize(); // your google.map initializer
}

Функция resize(), используемая для карт с изменяемым размером. Вы можете настроить это в соответствии с требованиями. Цель состоит в том, чтобы установить размеры map_canvas div на 100%.

function resize() {
  var main = document.getElementById("map_canvas");
  main.style.height = (getWindowHeight()) + "px";
  main.style.width = (getWindowWidth()) + "px";
}
onresize = function () { resize(); };

Функции javascript getWindowHeight() и getWindowWidth() можно получить из многих источников, или вы можете написать свои собственные.

В качестве редакционной статьи использование карт Google на страницах aspx сопряжено с трудностями. Например. обратная передача из элемента управления кнопки будет вызывать функцию myPageLoad, когда нежелательно с плохими результатами, если только обратная передача не отключена.

0 голосов
/ 15 января 2012

Это потому, что вы нигде не звоните initialize()

Позвоните ему при загрузке страницы, или на dom ready, или просто позвоните после окончания карты

<div id="map_canvas" style="width:100%; height:100%">map should go here</div>
<script>initialize();</script>

или даже лучше при закрытии таблицы, содержащей карту div

</table>
    <script>initialize();</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...