2017-02-22 35 views
0

我想通过这里https://developers.google.com/maps/documentation/embed/guide#overview以下这个参考嵌入谷歌地图我的Unity应用程序。到目前为止,我能够成功发送请求,就像没有更多的错误,但它不加载地图。它代之以加载如下的大问号: enter image description here谷歌地图嵌入在Unity3D不工作

这是什么原因?这里是连接到我的飞机者均基于脚本:

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; 
} 
+0

发布您的代码。人们如何在没有你的代码的情况下帮助你 – Programmer

+0

@Programmer完成先生 –

+0

我不能因为这么多的变量从代码所缺少重新创建您的问题。我会给你一种调试你自己的代码的方法。 '的debug.log( “?” 网址+ + QS)'调用'VAR REQ =新WWW之前把(网址+ + QS “?”);'。从控制台选项卡复制链接,然后将其粘贴到Web浏览器上。如果它不起作用,那么你构造你的URL的方式是错误的! – Programmer

回答

0

谷歌使用它们的地图两种不同的API:

Google Maps Embed

Google Map static

您所提供的链接是一个嵌入API。这只能在HTML页面上使用这样的:

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

第二种方法(静态API),当你犯了一个请求返回的图像。 这就是你应该使用的

URL应该是这种格式:

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. 

总是尝试在浏览器将其放入代码之前。

注意

您必须启用/授权谷歌地图静态在谷歌开发者控制台。要查看更多支持的参数,请参阅here

+0

伟大的你回答了我的问题!所以,我所做的是不可能的:) –

+0

我不会说“不可能”。您将不得不构建自己的webkit和JavaScript API,这些API将在Unity中运行。现在,这是非常困难的地方。 – Programmer