Javascript Google Map API未绘制标记数组
我需要一些建议或责备,因为我的代码错了。我不熟悉JQuery和谷歌地图api。我有一个JSON get来检索我的数据。我已经声明了一个数组并进行了存储(希望这是正确的方法) 更新**-由于@geocodezip,我已经更新了我的代码,以允许正确填充数组 当我运行应用程序时,地图加载良好,但没有标记。 我已将Google maps initializeMap()更改为异步版本Javascript Google Map API未绘制标记数组,javascript,jquery,arrays,google-maps,google-maps-api-3,Javascript,Jquery,Arrays,Google Maps,Google Maps Api 3,我需要一些建议或责备,因为我的代码错了。我不熟悉JQuery和谷歌地图api。我有一个JSON get来检索我的数据。我已经声明了一个数组并进行了存储(希望这是正确的方法) 更新**-由于@geocodezip,我已经更新了我的代码,以允许正确填充数组 当我运行应用程序时,地图加载良好,但没有标记。 我已将Google maps initializeMap()更改为异步版本 function initializeMap() { var map = new google.map
function initializeMap() {
var map = new google.maps.Map(document.getElementById("googleMap"), {
zoom: 12,
center: new google.maps.LatLng(citylat, citylng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < carparksArray.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(carparksArray[i][1], carparksArray[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(carparksArray[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
函数初始化映射(){
var map=new google.maps.map(document.getElementById(“googleMap”){
缩放:12,
中心:新google.maps.LatLng(Cityla,citylng),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i
我现在填充了一个数组,但地图上仍然没有标记
这是我的全部剧本。也许有一些主要的缺陷
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
//define variables
var geocoder;
var citylat = 0;
var citylng = 0;
var carparksArray = [];
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get the latitude and the longitude;
function successFunction(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
codeLatLng(lat, lng)
}
function errorFunction()
{
alert("Geocoder failed");
}
function initialize()
{
geocoder = new google.maps.Geocoder();
}
//get city of current location and runs codeAddress()
function codeLatLng(lat, lng) {
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({ latLng: latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
var arrAddress = results;
console.log(results);
$.each(arrAddress, function (i, address_component) {
if (address_component.types[0] == "postal_town") {
itemPostalTown = address_component.address_components[0].long_name;
document.getElementById("town").value = itemPostalTown;
codeAddress();
}
});
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
//get latlong of city and runs getCarParks()
function codeAddress() {
geocoder = new google.maps.Geocoder();
var address = document.getElementById("town").value;
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
citylat = results[0].geometry.location.lat();
citylng = results[0].geometry.location.lng();
getCarParksLatLng();
}
else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
//sets map up
function initializeMap() {
var map = new google.maps.Map(document.getElementById("googleMap"), {
zoom: 12,
center: new google.maps.LatLng(citylat, citylng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < carparksArray.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(carparksArray[i][1], carparksArray[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(carparksArray[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
//loads map
function loadScript() {
var script = document.createElement("script");
script.src = "http://maps.googleapis.com/maps/api/js?callback=initializeMap";
document.body.appendChild(script);
}
//get carparks names
function getCarParksLatLng() {
var town = document.getElementById("town").value;
var carparkList = "<p>";
var uri = "http://localhost/api/carparks?$filter=Town%20eq%20%27" + town + "%27";
$.getJSON(uri,
function (data) {
carparksArray = [];
$('#here_data').empty(); // Clear existing text.
// Loop through the list of carparks.
$.each(data, function (key, val) {
carparksArray.push([val.Name, val.Latitude, val.Longitude]);
});
console.log(carparksArray);
});
loadScript();
}
$(document).ready(initialize)
</script>
//定义变量
var地理编码器;
黄连酸变异系数=0;
var citylng=0;
var carparksArray=[];
if(导航器.地理位置)
{
navigator.geolocation.getCurrentPosition(successFunction,errorFunction);
}
//得到纬度和经度;
功能成功功能(位置)
{
var lat=位置坐标纬度;
var lng=位置坐标经度;
codeLatLng(lat,lng)
}
函数errorFunction()
{
警报(“地理编码器失败”);
}
函数初始化()
{
geocoder=新的google.maps.geocoder();
}
//获取当前位置的城市并运行codeAddress()
功能代码LATLNG(lat,lng){
var latlng=新的google.maps.latlng(lat,lng);
geocoder.geocode({latLng:latLng},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[1]){
var arrAddress=结果;
控制台日志(结果);
$.each(数组地址、函数(i、地址\组件){
if(地址组件类型[0]=“邮政镇”){
itemPostalTown=地址\u组件。地址\u组件[0]。长\u名称;
document.getElementById(“town”).value=itemPostalTown;
代码地址();
}
});
}否则{
警报(“未发现结果”);
}
}否则{
警报(“地理编码器因“+状态”而失败);
}
});
}
//获得城市的拉特朗并经营getCarParks()
函数代码地址(){
geocoder=新的google.maps.geocoder();
var address=document.getElementById(“town”).value;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
cityla=results[0]。geometry.location.lat();
citylng=results[0]。geometry.location.lng();
getCarParksLatLng();
}
否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
}
//设置地图
函数初始化映射(){
var map=new google.maps.map(document.getElementById(“googleMap”){
缩放:12,
中心:新google.maps.LatLng(Cityla,citylng),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i
您没有正确地将条目添加到停车场阵列中。每个数组元素都需要是一个数组,因此数组如下所示:
var carparksArray = [
['Bondi Beach', -33.890542, 151.274856, 4],
// ...
];
更新代码:
var carparks = [];
$.getJSON(uri,
function (data) {
$('#here_data').empty(); // Clear existing text.
// Loop through the list of carparks.
$.each(data, function (key, val) {
carparks.push([val.Name, val.Latitude, val.Longitude]);
});
});
loadScript();
}
谢谢大家在这方面的帮助。因为@geocodezip声明
$.getJSON是异步的,我将loadscript()函数移动到了ca
$.getJSON(uri,
function (data) {
carparksArray = [];
$('#here_data').empty(); // Clear existing text.
// Loop through the list of carparks.
$.each(data, function (key, val) {
carparksArray.push([val.Name, val.Latitude, val.Longitude]);
});
console.log(carparksArray);
loadScript();
});