晚安。我编写了一个 PHP 脚本,它以“0.0 0.0 name”格式输出数据(其中 0.0 分别是 X 和 Y 坐标,name 是标题)。这些是我需要随机切换到谷歌地图初始位置的建筑对象的坐标。该脚本工作正常:如果您直接转到其位置的链接,它会正确输出所有内容。但是,我在 Android Studio 中的代码不接受这些数据。请告诉我可能是什么问题:
public class GetMapPlace extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public String getMapPlace() {
String line = "0.0 0.0 none";
try {
URL url = new URL(URL_GET_MAP); // подключаемся к интернету
URLConnection connect = url.openConnection();
connect.setDoOutput(true);
BufferedReader reader = new BufferedReader(new InputStreamReader(connect.getInputStream())); // включаем буфер стандартного вывода, занося все в него (echo)
StringBuilder builder = new StringBuilder();
if (reader.readLine() != null) {
builder.append(line); // получаем строку
}
Log.d("DEBUG", "ОТВЕТ" + line); // эта строка не отображается в логах
}
catch (Exception e) {
e.printStackTrace();
}
return line;
} }
除了日志中没有 DEBUG 行之外,我还尝试手动打印行值:它始终是“0.0 0.0 none”。
以下是我将如何使用这些数据:
GetMapPlace activity = new GetMapPlace();
try {
String line = activity.getMapPlace();
Log.d("DEBUG", "ERROR123" + " " + line);
String[] words = line.split(" ");
position1 = Float.parseFloat(words[0]);
position2 = Float.parseFloat(words[1]);
name = words[3];
}
catch (Exception e) {
e.printStackTrace();
}
// For dropping a marker at a point on the Map
LatLng sydney = new LatLng(position1, position2);
googleMap.addMarker(new MarkerOptions().position(sydney).title(name).snippet("Marker Description"));
// For zooming automatically to the location of the marker
CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
我会很高兴得到任何帮助!先生们新年快乐!
如果我理解正确,那么您的行在函数 ( ) 的开头被初始化一次
String line = "0.0 0.0 none";
并且随后不会改变。显然你需要做这样的事情:好吧,关于日志中没有 DEBUG - 您需要查看记录器设置(是否有任何调试进入日志?)
如果我理解正确,您想从 Internet 上的某个页面获取部分代码。为此,您需要包含 jsoup.jar 库,然后您需要编写如下代码:
并且不要忘记在新线程中打开所有这些。