嵌入Unity3D的谷歌地图不起作用

时间:2017-02-22 03:46:03

标签: android google-maps unity3d

我尝试将Google地图嵌入我的Unity应用程序https://developers.google.com/maps/documentation/embed/guide#overview。到目前为止,我能够成功发送请求,就像没有更多错误但它没有加载地图。相反,它会加载一个如下所示的大问号: enter image description here

这是什么原因?这是附加到我的飞机btw的脚本:

IEnumerator _Refresh ()
{
    var url = "https://www.google.com/maps/embed/v1/place";
    var qs = "";
    if (!autoLocateCenter) {
        qs += "key=AIzaSyDQ18r-LtVpuo__ms7yl4KW0k9VhMOadgQ";
        qs += "&q=Cebu";
        qs += "&maptype=" + mapType.ToString ().ToLower ();
        qs += "&zoom=" + zoom.ToString ();
    }

    var usingSensor = false;
    #if UNITY_IPHONE
    usingSensor = Input.location.isEnabledByUser && Input.location.status == LocationServiceStatus.Running;
    #endif
    //qs += "&sensor=" + (usingSensor ? "true" : "false");

    foreach (var i in markers) {
        qs += "&markers=" + string.Format ("size:{0}|color:{1}|label:{2}", i.size.ToString ().ToLower (), i.color, i.label);
        foreach (var loc in i.locations) {
            if (loc.address != "")
                qs += "|" + WWW.UnEscapeURL (loc.address);
            else
                qs += "|" + WWW.UnEscapeURL (string.Format ("{0},{1}", loc.latitude, loc.longitude));
        }
    }

    foreach (var i in paths) {
        qs += "&path=" + string.Format ("weight:{0}|color:{1}", i.weight, i.color);
        if(i.fill) qs += "|fillcolor:" + i.fillColor;
        foreach (var loc in i.locations) {
            if (loc.address != "")
                qs += "|" + WWW.UnEscapeURL (loc.address);
            else
                qs += "|" + WWW.UnEscapeURL (string.Format ("{0},{1}", loc.latitude, loc.longitude));
        }
    }

    var req = new WWW (url + "?" + qs);
    yield return req;
    GetComponent<Renderer> ().material.mainTexture = req.texture;
}

1 个答案:

答案 0 :(得分:0)

Google为其地图使用了两种不同的API:

<强> 1 即可。Google Maps Embed

<强> 2 即可。Google Map static

您提供的链接是Embed API。这只能在像这样的html页面上使用:

  <iframe src="//www.google.com/maps/embed/v1/place?q=Harrods,Brompton%20Rd,%20UK
      &zoom=17
      &key=YOUR_API_KEY">
  </iframe>

第二种方法(Static API)在您发出请求时返回图像。 这是您应该使用的

网址应采用以下格式:

https://maps.googleapis.com/maps/api/staticmap?....

而不是:

https://google.com/maps/embed/v1/place?....

所以,你的链接应该是这样的:

https://maps.googleapis.com/maps/api/staticmap?key=AIzaSyDQ18r-LtVpuo__ms7yl4KW0k9VhMOadgQ&q=Cebu+City&maptype=satellite&zoom=5&size=640x400.

在将其放入代码之前,请始终在浏览器中进行尝试。

注意

您必须在Google Developers Console中启用/授权 Google Map static 。要查看更多受支持的参数,请参阅here