Загрузка местоположений из двумерного массива в bMap (плагин Google Maps для JQuery) - PullRequest
0 голосов
/ 30 ноября 2010

Я использую плагин bMap jQuery, чтобы упростить процесс работы с Google Maps на моем сайте.Способ загрузки маркеров в GoogleMap заключается в следующем.

$('#map').data('bMap').insertMarkers({
    "name":"Markers",
       "data":[
        {
         "lat":51.49757618329838,
         "lng":-0.1746654510498047, 
         "title":"Science Museum", 
         "body":"Exhibition Road, London SW7"
        },{
         "lat":51.47769451182406,
         "lng":-0.0009441375732421875, 
         "title":"Royal Observatory Greenwich", 
         "body":"Blackheath Ave, Greenwich, London SE10"
        } 
       ]
      });

Однако я загружаю местоположения из массива следующим образом:

MultiArray = new Array(2)    
MultiArray [0] = new Array(4)    
MultiArray [0][0] = "51.3149757618329838"    
MultiArray [0][1] = "-0.1249757618329838"    
MultiArray [0][2] = "Science Museum"    
MultiArray [0][3] = "Exhibition Road, London SW7"

MultiArray [1] = new Array(4)    
MultiArray [1][0] = "51.47769451182406"   
MultiArray [1][1] = "-0.0009441375732421875"    
MultiArray [1][2] = "Royal Observatory Greenwich"    
MultiArray [1][3] = "Blackheath Ave, Greenwich, London SE10"

MultiArray [2] = new Array(4)    
MultiArray [2][0] = "52.4756451182406"   
MultiArray [2][1] = "-0.0009441323532421875"    
MultiArray [2][2] = "Broadwalk College"    
MultiArray [2][3] = "Springfield Ave, Greenwich, London SE10"

Как и в случае, если массив имеет 10 элементов, все 10 элементов на карте.Это может быть общий вопрос JavaScript.Но я был введен в заблуждение по пути JSON, поэтому я хотел бы знать, есть ли другой способ.

Есть ли способ сделать это?Я знаю, что если я использую php и читаю расположение базы данных, я могу сгенерировать такой javascript на лету.Но у меня нет этой роскоши.У меня есть переменная javascript, которая представляет собой массив местоположений, которые я хотел бы загрузить на карту с помощью первой функции.

1 Ответ

0 голосов
/ 01 декабря 2010

это вполне возможно. Вместо того, чтобы использовать MultiArray и индивидуально добавленные элементы массива, я просто добавил функцию для добавления в массив (вместо добавления вручную [0] [1] и т. Д.)

Как обычно, не проверено, надеюсь, это поможет!

//global mapData variable
var mapData = [];

//example function to add a location to mapData
function addLocation(lat,lng,title,body){
    //push the new Object
    mapData.push({
        'lat':lat,
        'lng':lng,
        'title':title,
        'body':body
    });
}

//example function to actually call your insertMarkers jQuery
function insertMarkers(){
    $('#map').data('bMap').insertMarkers({
    "name":"Markers",
    "data": mapData
    });
}

//example, add a location to mapData 
addLocation("51.3149757618329838",
    "-0.1249757618329838",
    "Science Museum",
    "Exhibition Road, London SW7"
    );
//example, add another location to mapData 
addLocation("51.47769451182406",
    "-0.0009441375732421875",   
    "Royal Observatory Greenwich",
    "Blackheath Ave, Greenwich, London SE10"
    );

//example, call the insertMarkers function (or just replace with your 
//own insertMarkers using the mapData object.
insertMarkers();

Поскольку вы, в частности, спросили, как преобразовать ваш двумерный массив в данные, которые вы хотите предоставить своей функции карты, здесь вы идете.

//Your array
var MultiArray = new Array(2)    
MultiArray [0] = new Array(4)    
MultiArray [0][0] = "51.3149757618329838"    
MultiArray [0][1] = "-0.1249757618329838"    
MultiArray [0][2] = "Science Museum"    
MultiArray [0][3] = "Exhibition Road, London SW7"

// how to loop and just use the insertLocation function
// provided above
// I really don't recommend this, if you can output the array directly
// you might as well just use the "addLocation" function (or your own variety)
// directly
for(var i = 0; i<MultiArray.length; i++){
    addLocation(
       MultiArray[i][0],
       MultiArray[i][1],
       MultiArray[i][2],
       MultiArray[i][3]
    );
}

Кроме того, вы можете избежать всей этой чепухи и сделать это (мне это не очень нравится, и я хочу инкапсулировать подобные вещи в функцию.)

var MultiArray = [];
MultiArray.push({
    "lat": "51.3149757618329838",
    "lng": "-0.1249757618329838",
    "title": "Science Museum",
    "body": "Exhibition Road, London SW7"
});

$('#map').data('bMap').insertMarkers({
    "name":"Markers",
    "data": MultiArray
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...