我有两个数组。一个数组包含经度,另一个数组包含纬度。
我需要创建一个称为标记的哈希数组。每个标记将有一个关键的纬度和一个相应的值。它还将有一个关键的经度和一个对应的值。我如何从这两个数组中创建一个哈希数组。
我被卡住了,所以任何帮助都将非常感激。
我的代码如下
array_of_lon = [162.143815475374, 168.950878940823, 3.64965696346187, -167.21528146934, 177.219093253956]
array_of_lat = [7.07533432185069, -71.1633951653961, 83.684201546539, -41.7868611360175, 22.3943085903501]
array_of_markers_hashes = []
试试这种方式
markers = array_of_lon.zip(array_of_lat).map do |lon, lat|
{ latitude: lat, longitude: lon }
end
=> [{:latitude=>7.07533432185069, :longitude=>162.143815475374}, {:latitude=>-71.1633951653961, :longitude=>168.950878940823}, {:latitude=>83.684201546539, :longitude=>3.64965696346187}, {:latitude=>-41.7868611360175, :longitude=>-167.21528146934}, {:latitude=>22.3943085903501, :longitude=>177.219093253956}]
对于单对值,你会使用。
lon = 162.143815475374
lat = 7.07533432185069
{ lon: lon, lat: lat }
#=> {:lon=>162.143815475374, :lat=>7.07533432185069}
要把两个数组结合起来,就会用: zip
:
array_of_lon.zip(array_of_lat)
#=> [
# [162.143815475374, 7.07533432185069],
# [168.950878940823, -71.1633951653961],
# [3.64965696346187, 83.684201546539],
# [-167.21528146934, -41.7868611360175],
# [177.219093253956, 22.3943085903501]
# ]
最后是 map
将这些对子转换为标记。
array_of_lon.zip(array_of_lat).map do |lon, lat|
{ lon: lon, lat: lat }
end
#=> [
# {:lon=>162.143815475374, :lat=>7.07533432185069},
# {:lon=>168.950878940823, :lat=>-71.1633951653961},
# {:lon=>3.64965696346187, :lat=>83.684201546539},
# {:lon=>-167.21528146934, :lat=>-41.7868611360175},
# {:lon=>177.219093253956, :lat=>22.3943085903501}
# ]