2010-11-11 6 views
1

Heres le problème, j'ai une base de données des thats contiennent des informations sur les images de marquage:taille marqueur mise en Google Maps de v3 dynamiquement

je suis retreiving tout cela avec un appel ajax et enregistrer les données sous forme d'objets, donc je peux vérifier le type d'emplacement du marqueur et placez le marqueur approprié pour ce type d'emplacement.

Je récite bien les données mais quand j'essaie d'ajouter les données dans le constructeur pour une nouvelle image google map il erreurs, j'ai vérifié avec une alerte que la bonne information est là et il est donc ce qui donne ???

// 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) 

Heres le code complet: (les valeurs de test dans les lignes statiques de code sont les mêmes valeurs qui sont stockées dans les références d'objets que je fais) http://www.focus-on-plants.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); 

    }; 

Répondre

2

ok donc je découvert pourquoi il en était,

i se passait new google.maps.Size(myIconArray.icon[myData.name_etp].size)

image google maps.size prendre s deux paramètres distincts, new google.maps.Size(42,18)

je repassais 32, 37 qui était actuellement une chaîne,

i nécessaires pour diviser la chaîne en utilisant les éléments suivants:

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

puis d'ajouter x et y pour la taille que j'utilise: new google.maps.Size(tmp[0], tmp[1])

Questions connexes