Google在jQuery对话框窗口中映射JavaScript API
我使用谷歌地图JavaScript API来显示地图- 我需要的API中有一些静态映射没有的特性 因此,此页面作为独立页面运行良好:Google在jQuery对话框窗口中映射JavaScript API,javascript,jquery,google-maps,Javascript,Jquery,Google Maps,我使用谷歌地图JavaScript API来显示地图- 我需要的API中有一些静态映射没有的特性 因此,此页面作为独立页面运行良好: <!DOCTYPE html> <html> <head> <title>Map</title> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8">
<!DOCTYPE html>
<html>
<head>
<title>Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
function initialize() {
// Set map coordinates with lat and lng
var cord = new google.maps.LatLng(28.545078,-81.377196);
// Set map options
var mapOptions = {
zoom: 15,
center: cord,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// Set map
var map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
// Set map marker
var marker = new google.maps.Marker({
position: cord,
map: map,
title: 'Test'
});
}
// Load Map
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"style="width:600px; height:500px"></div>
</body>
</html>
如果页面简单,请考虑使用纯JS生成它。如果没有,如果您有使用加载功能,请将JS脚本放在page2的正文中,并使用$.load(“page2.php正文”)
S:考虑使用JS来生成映射而不是使用加载。这还允许您将代码封装在一个整洁的代码库插件中,而无需重复代码。
请查看Nemikor的这篇博文,它可以满足您的需要 基本上,在调用“open”之前,您首先从另一个页面“加载”内容jQuery('#dialog').load('path to my page').dialog('open');
这里有两个重要的注意事项:-
- 确保所有javascript/jQuery都包含在父页面中。不要试图通过AJAX交付js
- 确保仅当画布可见时才初始化贴图。初始化一个不可见的画布只有部分成功
$(document).ready(function() {
var $detailWin,
dialogInitialized,
map;
function getDialogContent() {
if(dialogInitialized) return;
dialogInitialized = true;//Well, at least initializing.
$.get('p2.php').done(function(html) {
$detailWin.html(html);
var cord = new google.maps.LatLng(28.545078, -81.377196);
var mapOptions = {
zoom: 15,
center: cord,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({
position: cord,
map: map,
title: 'Test'
});
}).error(function(jqXHR, textStatus, errorThrown) {
$detailWin.text(textStatus);
});
}
$detailWin = $("#detailWin").dialog({
autoOpen: false,
modal: true,
width: 700,
height: 600,
show: "fade",
close: "fade",
open: getDialogContent
});
$("#cc").on('click', function() {
$detailWin.dialog("open");
});
});
注:
- 确保
提供了一个包含地图画布的HTML片段,但没有p2.php
或
标记,而且绝对没有javascript - 上面的代码执行对话框(包括映射)的一次性初始化。如果每次打开对话框时都要重新加载对话框(或对话框的某些方面,如一组新的标记),则会略有不同
jQuery('#dialog').load('path to my page').dialog('open');
$(document).ready(function() {
var $detailWin,
dialogInitialized,
map;
function getDialogContent() {
if(dialogInitialized) return;
dialogInitialized = true;//Well, at least initializing.
$.get('p2.php').done(function(html) {
$detailWin.html(html);
var cord = new google.maps.LatLng(28.545078, -81.377196);
var mapOptions = {
zoom: 15,
center: cord,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({
position: cord,
map: map,
title: 'Test'
});
}).error(function(jqXHR, textStatus, errorThrown) {
$detailWin.text(textStatus);
});
}
$detailWin = $("#detailWin").dialog({
autoOpen: false,
modal: true,
width: 700,
height: 600,
show: "fade",
close: "fade",
open: getDialogContent
});
$("#cc").on('click', function() {
$detailWin.dialog("open");
});
});