【问题标题】:Google maps API v3 - is it possible to add a non specific location, such as a continent or a country?Google maps API v3 - 是否可以添加非特定位置,例如大陆或国家?
【发布时间】:2013-03-12 20:47:46
【问题描述】:

我最近开发了一个使用 Google maps APi v3 的应用程序,以便让我的客户指定他们的位置,并根据他们的用户(最终用户)的请求在地图上指示这个位置。

现在,我有 2 个问题:

我正在使用 2 种语言的 API,有时它们会变得混乱,变得非常丑陋。

现在,最理想的情况是,我希望允许用户实时更改地图的语言,允许根据最终用户(我的用户的用户)的需要添加两种语言的位置,但根据我进行的一项研究,这似乎是不可能的,除非您在同一页面中再次调用 API,而且我不会违反 Google 的使用条款。

我想出的是,我需要对每个位置进行地理编码,然后翻译成另一种语言,然后我就可以为每个用户和页面使用适当的位置名称。

第二个问题是,Google 似乎无法在全球范围内识别非特定类型的位置。 假设我输入“美国”或“欧洲”,现在,一些用户更愿意显示它,而 Google API 似乎将地址补全为:“德克萨斯,美国”或“斯德哥尔摩” ,瑞典,欧洲'。 那是它放置标记的位置,我想这就是地理编码所做的,获取一个特定的位置,但是是否有一个好的、防错误的方法来解决它,而不是分析用户的输入文本,或者以某种方式过滤和操作来自 API 的结果,这显然违反了使用条款?

在此先谢谢大家!在过去的几周里,我一直为此头疼不已。

【问题讨论】:

  • 我猜 Google 不提供将“欧洲”指定为位置的可能性,因为这没有什么意义 - 您希望它翻译到哪个物理位置?
  • 如果您要对欧洲或美国等位置进行地理编码 - 它会起作用,我刚刚对此进行了测试。它会将标记放置到谷歌选择的预定义位置,但它肯定会分别降落到欧洲或美国的地点,更详细的位置 - 更详细的标记点 - 有意义吗?
  • 可以,但 Google 可能会在 JSON 响应的 country_short、country_long 或 locality 字段中随机添加一个参数。有没有办法防止这种情况发生?
  • 既然它的 JSON 响应,为什么不直接从中选择您想要使用的数据并跳过其余部分?添加有关地理编码的代码示例我的意思。
  • 我的应用程序具有自动完成功能,并带有一个输入字段。过滤响应可能是一种选择,尽管这是最后的手段,即使这样,如果没有棘手的算法,我如何确定哪些信息是有用的,哪些不是?

标签: javascript google-app-engine google-maps google-maps-api-3


【解决方案1】:

您可以使用Geocoder API of Google Maps

您可以这样定义地理编码器:

geocoder = new google.maps.Geocoder();

看看这个例子:http://geocodezip.com/v3_zoom2countrySelectList.html 如下

【讨论】:

  • 谢谢!尽管我的应用程序有一个免费的输入文本字段,其中包含自动完成功能,并与 Google API 集成。所以基本上,我需要一个允许我的用户输入特定(街道、城市、国家)和非特定(国家、大陆、地区)位置的解决方案。有任何想法吗?提前致谢,O.
  • Geocoder 在输入中接受地址、邮政编码、街道名称、国家等。它正是谷歌地图的搜索输入。当您访问 maps.google.com 时,您可以在搜索字段中输入您想要的任何位置...
  • 我想也许我应该使用边界来定义一个位置,然后使用这些边界显示它。你们怎么看?。
【解决方案2】:

这是我在两个国家之间进行地理编码和交换的示例,并使用

打印地理编码调试内容

console.log(results[0]);

还有,

alert('Got formatted to: ' + results[0].formatted_address);

“欧洲”和“美国”应该出现。标记放置在地理编码返回的 latLng 值上。

它使用 gmap3 库来启动地图,因为它是我最近构建的一个示例,但所有相关的东西都是普通的谷歌地图地理编码代码。随心所欲地使用它。

查看JS fiddle (geocode using country name)

为了基于可见视口进行地理编码,您需要获取并传递地理编码器的当前边界,我创建了一个示例,该示例根据实际地理编码器结果对视口边界和中心映射到位置进行地理编码。

查看JS fiddle (geocode using viewport bounds)

【讨论】:

  • 我想也许我应该使用边界来定义一个位置,然后使用这些边界显示它。你们怎么看?。
  • 你的意思是视口边界?
  • ^ 我更新了我的答案以证明这一点,正如您所看到的,它根据可见视口对最近的地址进行地理编码 - 它可以稍微远离初始位置,因为世界上的每个地方都没有可读地址 ;)
猜你喜欢
  • 2011-12-04
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多