google maps v3 динамически устанавливает размер маркера - PullRequest
1 голос
/ 11 ноября 2010

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

Я получаю все это с помощью вызова ajax и сохраняю данные как объекты, так что я могу проверить тип местоположениямаркер и поместите соответствующий маркер для этого типа местоположения.

получаю данные нормально, но когда я пытаюсь добавить данные в конструктор для нового изображения карты Google, это ошибки, я проверил с предупреждением, чтоправильная информация есть и это так, что дает ???

// the following code will wor!!!
                   new google.maps.Size(32,37) // The Size works
//The following line breaks it with dynamic value    
                   new google.maps.Size(myIconArray.icon[myData.name_etp].size) 

вот полный код: (тестовые значения в статических строках кода - это те же значения, которые хранятся в ссылках на объекты, которые я создаю) http://www.focus -on-Plant.com / locator_iconed.php

function addMarker(map, myData){
      console.log(myData)
      // Create the marker
      // create the marker info first
      myLatLng = new google.maps.LatLng(myData.lat_mdt, myData.lng_mdt);
      markersArray.push(myLatLng);
      markersInfoArray.push(myData);

      // ----------------------------
      // NOW CREATE THE ACTUAL ICON
       //alert( myIconArray.icon[myData.name_etp].size)

      /*var iconimage = new google.maps.MarkerImage(
       '/images/icons/markers/flower_lb/image_med.png', //myIconArray.icon[myData.name_etp].image,
       new google.maps.Size(myIconArray.icon[myData.name_etp].size) // The Size
       //new google.maps.Point(myIconArray.icon[myData.name_etp].origin), // The origin
       //new google.maps.Point(myIconArray.icon[myData.name_etp].anchorpoint) // The anchor
      );*/
      //console.log(iconimage)
      var iconshape = {
       type: 'poly',
       coord: [0,2,1,2,1,1,18,0,18,1,19,2,20,19,19,19,18,21,14,21,10,26,5,21,1,21,1,20,0,20,0,2]
      }

      //alert(myIconArray.shape[myData.name_etp])
      mySize = 'new google.maps.Size('+myIconArray.icon[myData.name_etp].size+')'
      var iconimage = new google.maps.MarkerImage(
       myIconArray.icon[myData.name_etp].image,
       // the following code works!!!
                        new google.maps.Size(32,37) // The Size works
                       //The following line breaks iot with dynamic value    
                       //new google.maps.Size(myIconArray.icon[myData.name_etp].size) 


       //new google.maps.Point(0, 0), // The origin
       //new google.maps.Point(13,29) // The anchor
      );
      var iconshadow = new google.maps.MarkerImage(
       '/images/icons/markers/flower_lb/shadow_med.png',
       new google.maps.Size(42,18), // The Size
       new google.maps.Point(0,0), // The origin
       new google.maps.Point(13,18) // The anchor
      );

      var marker = new google.maps.Marker({
       position: myLatLng,
       map: map,
       title: myData.name_mdt,
       icon: iconimage,
       shadow: iconshadow//,
       //shape: iconshape
      });

      // Wrapping the event listener inside an anonymous function
      // that we immediately invoke and passes the variable i to.
      (function(myData, marker) {
       // Creating the event listener. It now has access to the values of
       // myData and marker as they were during its creation
       google.maps.event.addListener(marker, 'click', function() {
        //create thecontent for the infowindow
        var content = createContent(myData);
        var infowindow = new google.maps.InfoWindow({
         content: content
        });
        infowindow.open(map, marker);
       });
      })(myData, marker);  

     };

1 Ответ

2 голосов
/ 19 ноября 2010

хорошо, поэтому я узнал, почему это было,

я проезжал new google.maps.Size(myIconArray.icon[myData.name_etp].size)

google image maps.size принимает два отдельных параметра, new google.maps.Size(42,18)

я передавал 32, 37, что на самом деле было строкой,

Мне нужно было разбить строку, используя следующее:

tmp = myIconArray.icon[myData.name_etp].size.split(",")

затем добавить x и y для размера, который я использую: new google.maps.Size(tmp[0], tmp[1])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...