Java 从mysql数据库中获取坐标数组,并将其作为标记添加到android中的Google地图中
我是初学者。 我在Android Studio中创建了一个带有地图片段的活动,我没有动态添加1个标记或非动态添加多个标记的问题,比如:Java 从mysql数据库中获取坐标数组,并将其作为标记添加到android中的Google地图中,java,php,mysql,google-maps-android-api-2,Java,Php,Mysql,Google Maps Android Api 2,我是初学者。 我在Android Studio中创建了一个带有地图片段的活动,我没有动态添加1个标记或非动态添加多个标记的问题,比如: LatLng sydney = new LatLng(-34, 151); LatLng spokane = new LatLng(-35, 171); LatLng idaho = new LatLng(-32.3, 150); 但是,在从mysql获取坐标后,我需要动态设置一个标记数组 现在,出于测试目的,我有一个按钮“getCoo
LatLng sydney = new LatLng(-34, 151);
LatLng spokane = new LatLng(-35, 171);
LatLng idaho = new LatLng(-32.3, 150);
但是,在从mysql获取坐标后,我需要动态设置一个标记数组
现在,出于测试目的,我有一个按钮“getCoords”,它在单击时执行此操作(我将coords输出到textview以查看其是否有效。我能够获取要在textview中显示的值):
谢谢大家! 您可能需要一个for循环来插入标记,您能发布PHP响应吗?这样我就可以帮助您实现一些东西,将其解析到LatLng列表中,然后为每个标记添加一个标记 回答 假设您的点是lat、lng、#
-32.430412、-58.321323、#
之类的线,并且您的服务器会给您一个它们的列表,您首先将其拆分为:
String answer = "-32.430412,-58.321323,#-32.430412,-58.321323,#-32.430412,-58.321323,#";
// note that line breaks disappeared after parsing it to string
String[] parts = answer.split("#");
for (String point : parts) {
String[] pointData = point.split(",");
Float lat= Float.parseFloat(pointData[0]);
Float lng= Float.parseFloat(pointData[1]);
/// check if fit your actual map, remember you need everything required here loaded and declared before calling.
mMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lng))
.title("Hello world"));
}
我注意到您的服务器正在发送一个类似于:-32.4324234-58.4023392-32.4453244-58.3984984的列表,我建议使用类似
12.34567,12.346432,6
的东西,以便您确切地知道哪个是lat,哪个是longCorrect,这就是回复的样子。检查我编辑的内容和建议,在我为你编写代码时给我一些时间。在我将PHP结果更改为include和#后,效果非常好。谢谢你@Joaquin PerazaLet us.请看:我的道歉@EJoshuaS
<?php
$mysqli = new mysqli("localhost", "MYUSER", "MYPASS", "MYDB");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$query = "SELECT markers.lat, markers.lng
FROM markers
INNER JOIN userIds ON markers.user_id = userIds.user_id";
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
echo $row['lat'];
echo $row['lng'];
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
?>
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
setUpMap();
}
private void setUpMap() {
LatLng sydney = new LatLng(-34, 151);
LatLng spokane = new LatLng(-35, 171);
LatLng idaho = new LatLng(-32.3, 150);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.addMarker(new MarkerOptions().position(spokane).title("Marker in spokane"));
mMap.addMarker(new MarkerOptions().position(idaho).title("Marker in idaho"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
String answer = "-32.430412,-58.321323,#-32.430412,-58.321323,#-32.430412,-58.321323,#";
// note that line breaks disappeared after parsing it to string
String[] parts = answer.split("#");
for (String point : parts) {
String[] pointData = point.split(",");
Float lat= Float.parseFloat(pointData[0]);
Float lng= Float.parseFloat(pointData[1]);
/// check if fit your actual map, remember you need everything required here loaded and declared before calling.
mMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lng))
.title("Hello world"));
}