我是编程中的总NOOB(但这只是我在stackoverflow上的第二个问题:-))。
通过foreach函数,我得到5个不同的字符串值$ Loncoord,$ Latcoord,$ gui;
我可以在下面的代码中看到print_r
:
"-5.68166666667","+24.6513888889","IMG_3308",
但我现在想在$ map-> addMarkerByCoords中创建5个不同的标记(函数是吗?)。
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;
}
答案 0 :(得分:1)
如果要为每个参数调用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 :(得分:1)
这取决于map :: addMarkerByCoords()
的实现方法(非函数)名称及其签名表明您一次只能添加一个坐标。但是要确保你需要知道真正的签名方法。所以问题是:该方法是否允许数组作为参数?
通常,一种允许您一次添加多个项目的方法,其名称中包含预期操作的复数名称:
map :: addMarkersByCoords()//记下标记后的s
如果'map'类是您自己的实现,您可以按照自己喜欢的方式自由实现它,但在这种情况下,请记住方法的描述性名称。所以,添加一个标记:
地图:: addMarkerByCoords()
一次添加多个标记:
地图:: addMarkersByCoords()
通常,您将实现复数方法,如下所示:
public function addMarkersByCoords( array $markers )
{
foreach( $markers as $marker )
{
$this->addMarkerByCoord( $marker[ 'long' ], $marker[ 'lat' ], $marker[ 'img ' ], $marker[ 'name' ] );
}
}
基本上,复数方法接受一个数组,并通过调用单数方法添加每个单独的标记。
如果你想获得更多的OOP,你可以实现复数和单数方法来接受(一系列)Marker对象。但这与此次讨论无关。
此外,建议使用复数方法扩展Map的界面并不意味着您不能在foreach循环中调用singular方法在对象外部添加多个标记。这取决于你的偏好。
答案 2 :(得分:0)
尝试丢失部分报价......
$map->addMarkerByCoords($Loncoord,$Latcoord,$gui,'OldChicago');
为了正确回答这个问题,我们需要知道addMarkerByCoords期望你传递给它的是什么。