我使用MVC模板來允許用戶添加多個地址。他們點擊一個按鈕,這會使用jquery調用我的模板,並且表單將被生成。如果他們想要添加另一個位置,他們再次點擊該按鈕,並設置另一個表單等等。此模板運行正常,但在使用這些模板中的Google地圖時遇到了一些麻煩。如何使用Google地圖的動態表格
在這種情況下使用谷歌地圖的原因是提供一個很好的界面,爲您添加的位置添加經度和緯度。我在這裏使用class而不是id,因爲屏幕上可能有任意數量的地址區域。
在我的MVC的模板,我有以下的標記:
<div class="body">
<div class="st-form-line">
<span class="st-labeltext">Location</span>
<a href="#" class="GetPosition">Get Latitude & Longitude positions based on above address details.</a>
<div class="mapContainer" style="display:none;">
<p>If the map position is incorrect simply drag the pointer to the correct location.</p>
<div class="map" style="width: 450px; height: 350px;"><br/></div>
</div>
<div class="clear"></div>
</div>
<div class="st-form-line">
<span class="st-labeltext">@Html.LabelFor(model => model.Address.Longitude)</span>
@Html.EditorFor(model => model.Address.Longitude)
@Html.ValidationMessageFor(model => model.Address.Longitude)
<div class="clear"></div>
</div>
<div class="st-form-line">
<span class="st-labeltext">@Html.LabelFor(model => model.Address.Latitude)</span>
@Html.EditorFor(model => model.Address.Latitude)
@Html.ValidationMessageFor(model => model.Address.Latitude)
<div class="clear"></div>
</div>
</div>
我有以下的jQuery(此處所說的給我一個問題位):
$('a.GetPosition').live("click", function (evt) {
evt.preventDefault();
$(this).next().show();
var mapElement = $(this).closest('.body').find('.map');
var latElement = $(this).closest('.body').find('[id$=__Address_Latitude]');
var longElement = $(this).closest('.body').find('[id$=__Address_Longitude]');
showAddress(mapElement, latElement, longElement);
});
// Google Map
var map;
function showAddress(mapElement, latElement, longElement) {
var myLatlng = new google.maps.LatLng(40.713956, -74.006653);
var myOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(mapElement, myOptions);
var marker = new google.maps.Marker({
draggable: true,
position: myLatlng,
map: map,
title: "choose location"
});
google.maps.event.addListener(marker, 'click', function (event) {
latElement.val(event.latLng.lat().toFixed(5));
longElement.val(event.latLng.lng().toFixed(5));
});
}
現在我只是硬編碼默認地圖位置'40.713956,-74.006653',但我會改變這個使用真實世界的地址,一旦我可以讓地圖顯示正確。
我知道問題歸結爲'mapElement',但我不確定是什麼錯誤。如果我評論我們的showAddress函數調用並將一些文本輸出到mapElement中,我可以看到文本,所以它似乎找到了正確的dom loction。
我可以在這裏嘗試的任何想法?謝謝你的幫助。
感謝,
豐富
謝謝你的回答Anil。不幸的是,我的問題不是要讓Google地圖顯示一次,而是要讓它顯示爲具有類而不是id的特定div。我的代碼似乎找到了正確的元素,但Google地圖似乎並不喜歡我將此元素傳遞給它。 – 2012-03-13 15:54:48