【问题标题】:Google Map isn't show on Kendo Popup Editor谷歌地图未显示在剑道弹出编辑器上
【发布时间】:2015-05-19 15:51:56
【问题描述】:

我正在使用 Kendo ASP.NET 处理用户信息弹出窗口。弹出窗口还包含使用@Html.Kendo().TabStrip() 创建的选项卡。

到目前为止,显示和输入数据工作正常。但是,我无法在弹出编辑器中添加地图。

这是示例弹出窗口。有街道名称、街道号码等。虽然谷歌地图还没有与数据交互,但我希望它能正确显示。

Location.cshtml:

@(Html.Kendo().TabStrip()
      .Name("tabstripLocationPopup")
      .Items(tabstrip =>
      {
          tabstrip.Add().Text("Location")
              .Selected(true)
              .LoadContentFrom("", "")
              .Content(@<text>
<div id="GeoLocation" class="tab" style="overflow: auto; height: 90%;">
    <fieldset>
        <legend accesskey="I">Identification</legend>
        <table border="0" style="width: 95%; margin: 0 auto; border-collapse: collapse; border: 0px solid black;">
                    <tr>
                        <td class="label">
                            @Html.LabelFor(model => model.Lat, "Latitude")
                        </td>
                        <td class="editor">
                            @Html.Kendo().MaskedTextBoxFor(model => model.Lat).Name("Lat")
                        </td>

                        <td class="label">
                            @Html.LabelFor(model => model.Long, "Longitude")
                        </td>
                        <td class="editor">
                            @Html.Kendo().MaskedTextBoxFor(model => model.Long).Name("Long")
                        </td>
                    <tr>

            </table>
        </fieldset>
</div>
    </text>);

          })
    )

我在 index.cshtml 中添加了脚本:

<script type="text/javascript"
  src="http://maps.googleapis.com/maps/api/js?key=MyAPICode&sensor=false">
</script>
<script type="text/javascript">
  function initialize() {
    var mapOptions = {
      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"),
        mapOptions);
  }
</script>

如果我将此代码添加到 index.cshtml 文件中,则地图会正确显示。

<body onload="initialize()">
    <div id="map_canvas" style="width:500px; height:200px"></div>
</body>

但是,我希望它显示在弹出窗口 (Location.cshtml) 中。

我让它显示的唯一方法是在 Javascript 中添加按钮并在单击按钮时初始化地图。

如果我在这里遗漏了什么,请指导我。

【问题讨论】:

  • 你的&lt;div&gt;在TabStrip的内容中怎么没有结束标签?
  • ataravati,
    有结束标签。我只是在复制代码时错过了它。

标签: javascript google-maps google-maps-api-3 kendo-asp.net-mvc kendo-ui-mvc


【解决方案1】:

看看我设置的这个道场

Google Maps on pop up

强调我所做的。

注意:您需要在 API 开发控制台中添加您的 API 密钥并授权该站点才能显示地图,否则您将收到未授权或无效密钥消息显示

我使用了 Telerik 自己的一个演示,然后添加了以下代码:

editable: {
               mode: "popup",
               template: kendo.template($("#editor").html())
          }, 
edit: function(e){ initialize()}

然后为弹出窗口添加了这个示例模板脚本。删除所有其他内容只是为了保持简单

<script id="editor" type="text/x-kendo-template">
  <div id="GeoLocation" class="tab" style="overflow: auto;width:300px; height: 300px;">
  </div>
</script>

然后像这样使用你的初始化脚本:

   function initialize() {
    var mapOptions = {
                       center: new google.maps.LatLng(-34.397, 150.644),
                       zoom: 8,
                       mapTypeId: google.maps.MapTypeId.ROADMAP
                     };
    var map = new google.maps.Map(document.getElementById("GeoLocation"),
        mapOptions);
  }

我所要做的就是移动调用此代码的位置。从google通常demo的常用OnLoad到网格的编辑功能。 因此,当显示弹出窗口时,这将在显示窗口之前被触发并将其初始化为您需要的任何内容。

如果您需要任何进一步的帮助,请告诉我。

【讨论】:

  • 感谢您的回答。首先,我有自己的 API 密钥,但不想在这篇文章中分享。所以这不是问题,因为它正在处理我为测试目的创建的单个 html 文件;但是,不在剑道弹出窗口中。
  • 我理解不共享 api 密钥,因为我使用我的 api 密钥测试了代码并将其从 dojo 中删除。如果您将 api 密钥复制并粘贴到 dojo 中,它是否按预期工作? (或者只是将代码复制并粘贴到一个新的 dojo 中,然后您可以确保它有效)。对于您的场景,我建议您为网格创建一个编辑器模板,然后您可以添加自定义代码。如果您需要示例,我可以将其添加到我的答案中。
  • 其次,在某种程度上,事件函数会导致自动调整弹出窗口大小的问题。所以我使用方法调用弹出编辑器@(Html.Kendo().Grid&lt;ICWeb.Models.GeoLocation&gt;().Name("GeoLocation").Editable(editable =&gt; editable.Mode(GridEditMode.PopUp)) 根据您的建议,我添加了.Events(e =&gt; e.Edit("initialize")) 现在弹出窗口显示谷歌地图。谢谢!
  • 您在我在上面发表评论之前发表了评论。当我将我的 API 密钥粘贴到 dojo 时,map 可以工作。我想了解您在评论中提到的内容。你能给我举个例子吗?
  • 那么你还需要一个例子还是你现在解决了你的问题?如果您现在已经解决了您的问题并且我的回答确实有帮助,请随时将其标记为答案。如果您需要添加其他任何内容,请告诉我,我会更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2019-03-26
  • 1970-01-01
  • 2012-01-28
相关资源
最近更新 更多