2009-08-30 8 views
0

Je suis un total de NOOB en programmation (mais c'est seulement ma deuxième question sur stackoverflow :-)).utilise une chaîne différente dans la fonction?

Par une fonction foreach, j'obtiens 5 valeurs de chaînes différentes pour $ Loncoord, $ Latcoord, $ gui; ce que je peux voir avec le print_r dans le code écrit ci-dessous:

"-5.68166666667","+24.6513888889","IMG_3308", 

Mais je veux maintenant créer 5 marqueurs différents dans les $> carte- addMarkerByCoords (fonction est-il?).

print_r ("$Loncoord"); 
print_r ("$Latcoord"); 
print_r ("$gui"); 

$map->addMarkerByCoords("$Loncoord","$Latcoord","$gui",'OldChicago'); 

Est-ce possible? Dois-je les mettre dans un tableau et les appeler dans la (fonction?) Ou dois-je utiliser une fonction foreach? J'ai essayé les deux pour une semaine maintenant mais je n'arrive pas à le faire fonctionner.

Pouvez-vous m'aider?

Les réponses que vous avez produites m'ont donné un tour dans la bonne direction. Merci pour les réponses rapides et la partie explicative.

Mais pour le addMarkerByCoord J'ai trouvé dans l'API Googlemaps (function (stupide moi)!):

function addMarkerByCoords($lon,$lat,$title = '',$html = '',$tooltip = '') { 
     $_marker['lon'] = $lon; 
     $_marker['lat'] = $lat; 
     $_marker['html'] = (is_array($html) || strlen($html) > 0) ? $html : $title; 
     $_marker['title'] = $title; 
     $_marker['tooltip'] = $tooltip; 
     $this->_markers[] = $_marker; 
     $this->adjustCenterCoords($_marker['lon'],$_marker['lat']); 
     // return index of marker 
     return count($this->_markers) - 1; 
    } 
+0

Montrez-nous le code qui ne fonctionne pas. Les questions telles quelles sont un peu générales - je veux dire, oui, vous devez les boucler s'il y a plusieurs adresses, mais cela ne vous semble pas suffisant pour que cela fonctionne. –

+0

Le terme avec lequel vous luttez est la méthode (pas la fonction). Je les échange tout le temps parce que, fondamentalement, toute méthode est une fonction dans une classe. Vous appliquez donc des méthodes à des objets comme si vous appliquiez des fonctions à des variables. – Anthony

Répondre

1

Il dépend de la mise en œuvre de map :: addMarkerByCoords()

Le nom de la méthode (pas une fonction) et sa signature suggèrent que vous ne pouvez ajouter qu'un seul coord à la fois. Mais pour être sûr que vous auriez besoin de connaître les méthodes vraie signature. La question est donc la suivante: est-ce que la méthode autorise les tableaux comme arguments?

Habituellement, une méthode qui vous permet d'ajouter plusieurs éléments à la fois, a le nom pluriel de l'action envisagée dans son nom:

carte :: addMarkersByCoords() // notez les s après le marqueur

Si la classe 'map' est votre propre implémentation, vous pouvez l'implémenter comme vous le souhaitez bien sûr, mais dans ce cas gardez les noms descriptifs des méthodes à l'esprit., Ajoutez un marqueur:

carte :: addMarkerByCoords()

Ajouter plusieurs marqueurs à la fois:

carte :: addMarkersByCoords()

Généralement, vous mettre en œuvre la méthode plurielle comme quelque chose comme this:

public function addMarkersByCoords(array $markers) 
{ 
    foreach($markers as $marker) 
    { 
     $this->addMarkerByCoord($marker[ 'long' ], $marker[ 'lat' ], $marker[ 'img ' ], $marker[ 'name' ]); 
    } 
} 

Fondamentalement, la méthode plurielle accepte un tableau et ajoute chaque marqueur individuel en appelant la méthode singulière.

Si vous voulez obtenir encore plus de POO, vous pouvez implémenter la méthode au pluriel et au singulier pour accepter (un tableau) d'objets Marqueur. Mais ce n'est pas particulièrement pertinent pour cette discussion. En outre, l'extension suggérée de l'interface de Map avec une méthode plurielle ne signifie pas nécessairement que vous ne pouvez pas ajouter plusieurs marqueurs en dehors de l'objet en appelant la méthode singulière dans une boucle foreach. C'est à votre goût vraiment.

0

Essayez de perdre quelques-unes des citations ...

$map->addMarkerByCoords($Loncoord,$Latcoord,$gui,'OldChicago'); 

Pour répondre à la question correctement cependant, nous aurions besoin de savoir ce que addMarkerByCoords s'attendait à ce que vous lui passiez.

1

Si vous voulez appeler les addMarkerByCoords pour 5 fois avec 5 valeurs différentes pour chaque paramètre que vous pouvez ensuite créer un tableau pour chaque paramètre, puis itérer avec la fonction foreach:

$Loncoord=array(1,2,3,4,5); 
$Latcoord=array(1,2,3,4,5); 
$gui=array(1,2,3,4,5); 
$city=array('OldChicago','bla','bla','bla','bla'); 
foreach($Loncoord as $k=>$v) 
    $map->addMarkerByCoords($Loncoord[$k],$Latcoord[$k],$gui[$k],$city[$k]); 
Questions connexes