java - 确定谷歌街景功能存在

标签 java android google-street-view

有没有一种方法可以确定 Android 应用程序(即使用 Java)是否提供 Google 街景全景图。

PHP、Python 或其他服务器端技术似乎不存在替代方案。

在不存在全景图的情况下调用 Google 街景的影响只是黑屏和“旋转的东西”。

最佳答案

我为此创建了一个小技巧。 :)

字符串.xml

<string name="html_streetview">    <![CDATA[
<html>
<head>
   <script src="http://maps.google.com/maps/api/js?v=3&amp;sensor=false" type="text/javascript"></script>
 </head>
<body>
<script type="text/javascript">
 Android.echo();
 var testPoint = new google.maps.LatLng(%1$s, %2$s,true);
 var svClient = new google.maps.StreetViewService();
 svClient.getPanoramaByLocation(testPoint, 50,function (panoramaData, status) {
   if (status == google.maps.StreetViewStatus.OK) {
     Android.hasStreetview();
   } else {
     Android.hasNotStreetview();
   }
 });
</script>
</body>
</html>
]]>
</string>

现在在 Activity 上添加一个街景按钮,并将以下代码放入 onclick 方法中:

    if (webView == null) {
      webView = new WebView(this);
      webView.setVisibility(View.INVISIBLE);
      webView.getSettings().setJavaScriptEnabled(true);
      webView.addJavascriptInterface(new JavascriptCheck(this), "Android");
      webView.setWebViewClient(new WebViewClient() {
          public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
               Toast.makeText(this, "Streetview loading", Toast.LENGTH_SHORT).show();
               super.onReceivedError(view, errorCode, description, failingUrl);
                }
      });
    }

    Toast.makeText(this, "Streetview loading", Toast.LENGTH_SHORT).show();

    webView.loadDataWithBaseURL(baseurl, 
      getString(R.string.html_streetview, latitude, longitude), "text/html", "UTF-8", baseurl);

现在是 Activity 的内部类:

public class JavascriptCheck {
   private final Context context;

   public JavascriptCheck(Context context) {
      this.context = context;
   }

   public void echo() {
       Log.d("JavascriptChecker", "javascript called");
   }

   public void hasStreetview() {
       pushStreetviewState(true);
   }

   public void hasNotStreetview() {
      pushStreetviewState(false);
   }

   private void pushStreetviewState(final boolean hasStreetview) {
       Log.d("JavascriptChecker", hasStreetview);
       // TODO do your stuff needed here
   }
}

这是一个相当糟糕的解决方法,但可能会有所帮助。 :)

关于java - 确定谷歌街景功能存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247044/

相关文章:

android - 如何以编程方式更改现有图层列表的项目(ScaleDrawable)的颜色

google-maps - 获取 Google StreetView API 的 POV

javascript - Streetview Api,锁定间距(垂直平移)

java - 按从最高-> 最低的每个字符串解析的整数对 ArrayList<String> 进行排序?

java - 我如何以编程方式将文件上传到网站?

java - Android Studio 中的 IllegalAccessException 目标 android 为 4.4

android - Ubuntu 上的 Appium 更新

javascript - 有没有办法使嵌入的谷歌地图成为静态的不可点击的图像?

java - 通过 GSM 调制解调器播放 WAV 文件

java - 如何获取给定城市名称或地址的纬度和经度(java代码)?