地图上未绘制标记
Markers not being drawn on map
我已经编写了下面的代码,从数据的角度来看,一切都很顺利,数据是以JSON格式从ajax调用返回的,如下所示。
问题似乎出在addMarker
函数上,数据被传递到函数中,我已经用addMarker
函数中的alert()
验证了这一点,但没有在地图上绘制标记,也没有在浏览器或控制台中抛出错误。
添加每个标记后,我是否需要调用setMapOnAll
才能在地图上显示它?我已经尝试将setMapOnAll
添加到addMarker
函数的末尾,但没有任何更改。
JSON:
{id:278, title:"", lat:"52.50474200", lng:"-8.71032700"}
Javascript:
$(document).ready(function () {
var map;
var markers = [];
function loadMap()
{
map = new google.maps.Map(document.getElementById('map_canvas'), {
minZoom: 2,
maxZoom: 12,
zoom: 6,
disableDefaultUI: true,
zoomControl: true
});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(initialLocation);
});
} else {
map.setCenter({lat: -34.397, lng: 150.644});
}
loadMarkerData(-1);
}
function addMarker(lat, lng) {
var marker = new google.maps.Marker({
position: {lat: lat, lng: lng},
map: map
});
markers.push(marker);
}
function setMapOnAll(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
function loadMarkerData(selectedKeys, year, source)
{
var data = {id: 1};
if (selectedKeys != '' && year != '' && source != '') {
data = {id: 1, selectedKeys:selectedKeys, year:year, source:source};
}
$.ajax(
{
url: "ajaxcall.php",
type: "POST",
data: data,
success: function (data, textStatus, jqXHR)
{
if (data != '') {
markerObj = eval(data);
$.each(markerObj, function(index, element) {
addMarker(element.lat, element.lng)
});
}
},
error: function (jqXHR, textStatus, errorThrown)
{
console.log(textStatus);
}
});
}
});
使用原始代码,我得到一个javascript错误:Assertion failed: InvalidValueError: setPosition: not a LatLng or LatLngLiteral: in property lat: not a number
,因为这些值是字符串。你可以通过改变这个来解决这个问题:
function addMarker(lat, lng) {
var marker = new google.maps.Marker({
position: {
lat: lat,
lng: lng
},
map: map
});
markers.push(marker);
}
收件人:
function addMarker(lat, lng) {
var marker = new google.maps.Marker({
position: {
lat: parseFloat(lat),
lng: parseFloat(lng)
},
map: map
});
markers.push(marker);
}
相关文章:
- 在谷歌地图上绘制位置数据库
- “可绘制地图”设置地图选项“纬度-经度”
- 使用复选框绘制多段线谷歌地图API3,不'不起作用
- Python在spark中绘制地图
- 使用Node js和D3实时绘制地图上的国家名称
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 谷歌地图API在Javascript中,绘制圆的半径
- 使用Raphael js直接在谷歌地图上绘制
- 谷歌地图/GMAP3 - 绘制从用户地理位置到已知目的地的路线 - 需要帮助
- 如何使用谷歌地图绘制已知路线 JavsScript API V3.
- Google Maps v3 API-在地图上绘制圆圈
- 用d3和topojson绘制一张地图
- 使用D3.js在地图上绘制点的最佳方式
- 如何在谷歌地图API中使用坐标数组绘制多边形
- 需要使用新数据重新绘制地图(与CartoDB.js结合使用)
- GoogleMaps和GeoIP:从IP获取Lat、Long并绘制地图
- 选择语言绘制地图& &;用图标显示几个区域
- Canvas只绘制地图上循环的最后一个元素
- 如何在这里绘制地图与这里地图Javascript 3 API
- 如何从像素阵列绘制地图