Синтаксическая ошибка jQuery gmap3 - PullRequest
0 голосов
/ 02 марта 2012

Я работаю с плагином jQuery gmap3. Я могу получить несколько маркеров для добавления на карту, но я застрял, пытаясь дать одному из них информационное окно.

Если я удаляю код под комментарием «// добавить маркер с информационным окном», маркеры создаются, но без информационных окон. С кодом, как это не создается карта.

$('#test').gmap3(
  //create the map
  { action:'init'
  },

  //add a marker with info window
  { action: 'addInfoWindow',
    address: "London"
  },
  infowindow:{
    options:{
    content: 'This is London'
    },
    apply:[
        { action:'setContent',
            args:[
            '<span style="color:#000">Here is a new content !<span>'
            ]
        }   
    ]
    },

  //add a marker
  { action: 'addMarker',
    address: "Paris",
  },

  //add a marker
  { action: 'addMarker',
    address: "Madrid",
  }

  //autofit the map view
  ,
  "autofit"     

);

Я предполагаю, что это проблема синтаксиса, но я полностью застрял, поэтому буду очень признателен за любую помощь. Спасибо

ОБНОВЛЕНИЕ Я получил это работает со следующим, за исключением того, что функция автоподбора не работает.

$('#test').gmap3({
  action: 'addMarker',
  address: "place de l'étoile, Paris",

  marker:{
    options:{
      draggable: false
    }
  },
  infowindow:{
    options:{
      content: 'Hello World !'
    },
    events:{
      closeclick: function(){
        alert("closing : " + $(this).attr("id")); 
      }
    }
  }
},

  //add a marker
  { action: 'addMarker',
    address: "London",
  },
      "autofit" 

);

Ответы [ 2 ]

1 голос
/ 02 марта 2012

у вас есть запятые в вашем json

т.е. по адресу: Лондон (2-я строка под комментарием, который вы упомянули)

Когда это последний элемент объекта javascript, непоставьте запятую

Кроме того, информационное окно выглядит неправильно расположенным.он должен быть заключен в фигурные скобки. Я думаю, что он, вероятно, принадлежит в конце вызова функции, но я не знаком с API Gmap3.

Глядя на API, похоже, что есть более чистые способы объявлениявсе это.Я бы сослался на http://gmap3.net/api.html

Похоже, что infoWindow принадлежит в действии: объект "infoWindow"

что-то вроде:

$('#test').gmap3(
  //create the map
  { 
    action:'init'
  },

  //add a marker with info window
  { 
    action: 'addInfoWindow',
    address: "London"
    infowindow:{
      options:{
        content: 'This is London'
      },
      apply:[
          { action:'setContent',
              args:[
              '<span style="color:#000">Here is a new content !<span>'
              ]
          }   
        ]
      }
  },

  //add a marker
  { 
    action: 'addMarker',
    address: "Paris"
  },

  //add a marker
  { 
    action: 'addMarker',
    address: "Madrid"
  }

  //autofit the map view
  ,
  "autofit"     

);
0 голосов
/ 02 марта 2012

Я думаю, что рабочий процесс gmap3 очень запутанный, поэтому легко создавать некоторые синтаксические ошибки ^^


Edit:

Однако им лучше помечать эту библиотеку как «бета», пока они не устранили некоторые серьезные проблемы (например, автофит, который также не работал в их собственной демонстрации).

Основная проблема «автоматического подбора» с несколькими маркерами заключается в том, что вы должны подождать, пока все маркеры не будут применены к карте.

Таким образом, вместо повторных вызовов addMarker используйте addMarkers и примените «автоподбор» в обратном вызове addMarkers.

Поскольку опция autofit не работает должным образом, используйте возможности, предоставляемые google-API: создайте LatLngBounds -объект из позиций маркеров и примените границы, используя map.fitBounds().

Демо: http://jsfiddle.net/doktormolle/BQyXb/

...