0

私はasp.netmvc3アプリケーションに取り組んでいます。

部分ビュー内にグーグルマップをロードしようとしていますが、機能していません:

私の部分ビュー_Map.cshtml

<style type="text/css">  
    #map_canvas 
    {
        position:absolute;
        top:40px;
        left:12px;
        width:576px;
        height: 450px;
    }

</style>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<div class="sTitle">Name</div>

<div id="map_canvas"></div>


<script type="text/javascript">
var map;
$(document).ready(function () {
    var map;
    var myOptions = {
        zoom: 8,
        center: new google.maps.LatLng(-34.397, 150.644),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);

    google.maps.event.addDomListener(window, 'load', initialize);
});

</script>

マップはAJAX呼び出しを介してロードされます:

         $.ajax({
                type: 'GET',
                url: '@Url.Action("GetMapById", "Map")',
                data: { 'id': sId },
                success: function (html) {
                    $("#content").html(html);
                },
                complete: function () {
                },
                error: function () {
                    alert("There was an error opening the Map. Please try again or contact an administrator");
                }
            });

パーシャルはContentという名前のdivにロードされます

そして、コントローラーで部分ビューを返すだけです

 return PartialView("_Map");

ビューは読み込まれていますが、マップは表示されていません。

Firebugを使用して問題を追跡しましたが、次のエラーが発生しました。

“google is not defined”

問題について何か考えはありますか?

どうもありがとう

4

3 に答える 3

1

これを入れて解決しました

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

レイアウトページにあり、サブビューにはありません

于 2012-07-10T05:57:55.813 に答える
0

あなたはこの方法でグーグルマップをロードする必要があります:

<script type="text/javascript">
   var map;
   google.load("maps", "3", { other_params:"sensor=false" });
   $(document).ready(function () {

そして、「varmap」を2回再初期化します。

于 2012-06-27T23:37:50.267 に答える
0

レイアウトページにマップをロードしたくありませんでした...そうすると、スクリプトのロードに時間がかかるとページ全体が遅くなり、さらに、そこで必要ない場合は、なぜブラウザはそれをダウンロードしますか?

これを回避するために、次のように部分ビューにマップAPIをロードできることがわかりました。

$.getScript('http://maps.googleapis.com/maps/api/js',function (){
  google.maps.event.addDomListener(window, 'load', initialize);
});
于 2015-12-01T14:39:14.823 に答える