我正在尝试在地图初始化后在地图上绘制标记。但是我需要知道中心点。
我已经尝试过使用这两种方法但是我在chrome js中得到“Uncaught RangeError:超出最大调用堆栈大小”;
$('#map_canvas').gmap('get', 'map').getCenter()); and also
$('#map_canvas').gmap('option', 'center');
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="jquery-ui-map-3.0-rc/ui/jquery.ui.map.js"></script>
<script type="text/javascript" src="jquery-ui-map-3.0-rc/ui/jquery.ui.map.extensions.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script>
$('#map_page').live("pageshow", function() {
function add_markers() {
var location = $('#map_canvas').gmap('option', 'center');
$.getJSON( 'http://localhost/motherly/android/index.php/api/venues?lat=' + location.lat() + '&lng=' + location.lng(), function(data) {
console.log(data['response']);
$.each(data.response, function(i, marker) {
// console.log(marker.lat, marker.lng);
$('#map_canvas').gmap('addMarker', {
'position': new google.maps.LatLng(marker.lat, marker.lng),
'bounds': true
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', { 'content': marker.name }, this);
});
});
});
}
function initialize(lat,lng) {
$('#map_canvas').gmap({'center' : new google.maps.LatLng(lat, lng), 'callback': function(){
add_markers();
}});
}
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
console.log(position);
initialize(position.coords.latitude,position.coords.longitude);
// google.maps.event
});
}
});
答案 0 :(得分:0)
道歉章节我意识到问题是我在地图的构造函数中调用了里面的,这对于地图对象没有初始化是有道理的。
所以回顾一下这个问题是add_markers()方法在这个构造函数内部(将add_markers()移到这一行下面);
$('#map_canvas').gmap({'center' : new google.maps.LatLng(lat, lng), 'callback': function(){
}});