我正在为Android 创建一个phonegap 应用程序。我不太熟悉 Javascript,并且遇到过一种情况,我有两个函数,一个函数初始化一个名为“map”的 map ,另一个函数负责显示从 map 上的数据库加载的标记列表。
但是我的问题是如何将标记设置为显示在以不同函数启动的 map 上?
编辑
这是一些代码:
function map() {
...
map = new google.maps.Map(document.getElementById("map"), mapOptions);<br/>
...
}
function markers() {
var MarkerType1 = new google.maps.MarkerImage("/android_asset/www/assets/markerType1.png",
new google.maps.Size(29.0, 48.0),
new google.maps.Point(0, 0),
new google.maps.Point(14.0, 24.0)
);
<p>var MarkerType2 = new google.maps.MarkerImage("/android_asset/www/assets/markerType2.png",
new google.maps.Size(29.0, 48.0),
new google.maps.Point(0, 0),
new google.maps.Point(14.0, 24.0)
); </p>
<p>var geocoder = new google.maps.Geocoder();
var eventList = $('ul#eventList').empty();</p>
<pre><code>var eventPoints = $.ajax({
type: 'GET',
url: 'http://www.somedomain.com/loadEvents.php?&jsoncallback=?',
dataType: 'JSONp',
timeout: 5000,
success: function(data) {
$.each(data, function(i,item){
if (item.EventType == 1) {
new google.maps.Marker({
position: new google.maps.LatLng(item.latitude, item.longitude),
map: this.map,
icon: MarkerType1,
draggable:false
});
} else if (item.EventType == 2) {
new google.maps.Marker({
position: new google.maps.LatLng(item.latitude, item.longitude),
map: this.map,
icon: MarkerType2,
draggable:false
});
}
}
}
});
</code></pre>
}
最佳答案
这是一个变量范围的问题。确保变量 map
是在两个函数之外声明的。
$(function() {
var map;//outer variable is accessible within both functions.
function createMap() {
map = new google.maps.Map({
...
});
}
function createMarkers() {
$.ajax({
...
success: function(data) {
$.each(data, function() {
var marker = new google.maps.Marker({
map: map,
...
});
});
}
});
}
createMap();
createMarkers();
});
实际上,如果需要调用 map /标记创建代码来响应某些 future 事件,您只需将 map /标记创建代码放入函数中即可。
如果您想在页面加载时立即创建 map 及其标记,则可以按如下方式操作:
$(function() {
var map = new google.maps.Map({
...
});
$.ajax({
...
success: function(data) {
$.each(data, function() {
var marker = new google.maps.Marker({
map: map,
...
});
});
}
});
});
关于Javascript - 在另一个函数中调用映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13993442/