использовать другую строку в функции? - PullRequest
0 голосов
/ 30 августа 2009

Я полный NOOB в программировании (но это только мой второй вопрос по stackoverflow :-)).

С помощью функции foreach я получаю 5 различных строковых значений для $ Loncoord, $ Latcoord, $ gui; это я могу видеть с помощью print_r в коде, написанном ниже:

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

Но теперь я хочу создать 5 различных маркеров в $ map-> addMarkerByCoords (функция?).

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

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

Возможно ли это?

Нужно ли мне помещать их в массив и вызывать их в (функции?) Или мне нужно использовать функцию foreach? Я пробовал и то и другое неделю, но не могу заставить его работать.

Вы можете мне помочь?

Ответы, которые вы дали, повернули меня в правильном направлении. Спасибо за быстрые ответы и объясняющую часть.

Но для addMarkerByCoord (функция! (Глупо)) я нашел это в googlemaps API:

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;
    }

Ответы [ 3 ]

1 голос
/ 30 августа 2009

Если вы хотите вызвать addMarkerByCoords 5 раз с 5 различными значениями для каждого параметра, то вы можете создать массив для каждого параметра и затем выполнить итерацию с помощью функции 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]);
1 голос
/ 30 августа 2009

Зависит от реализации map :: addMarkerByCoords ()

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

Как правило, метод, который позволяет добавлять несколько элементов одновременно, во множественном числе содержит имя предполагаемого действия в своем имени:

map :: addMarkersByCoords () // обратите внимание на маркер

Если класс 'map' является вашей собственной реализацией, вы, конечно, можете свободно реализовывать его так, как вам нравится, но в этом случае помните описательные имена методов. Итак, добавьте один маркер:

карта :: addMarkerByCoords ()

Добавить несколько маркеров одновременно:

карта :: addMarkersByCoords ()

Обычно вы бы реализовали метод множественного числа примерно так:

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

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

Если вы хотите получить еще больше ООП, вы можете реализовать метод множественного числа и единственного числа для приема (массива) объектов Marker. Но это не особенно актуально для этого обсуждения.

Кроме того, предлагаемое расширение интерфейса Map множественным методом не обязательно означает, что вы не можете добавить несколько маркеров вне объекта с помощью вызова единственного метода в цикле foreach. Это зависит от ваших предпочтений.

0 голосов
/ 30 августа 2009

Попробуйте потерять некоторые цитаты ...

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

Чтобы правильно ответить на вопрос, нам нужно знать, что addMarkerByCoords ожидает, что вы перейдете к нему.

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