在混合移动应用程序中使用 VueJs 实现 google 个地方
Implementation of google places using VueJs in Hybrid mobile application
我正在尝试在混合移动应用程序中使用 vue js 实现对 google 地点的搜索。搜索功能工作正常,但当我点击地点列表时,我无法 select 任何一个。
我用过vue-google-places library and vue-google-autocomplete库。在这两个库中,我都面临着同样的问题。
<template>
<q-item>
<q-item-main>
<q-field :error="$v.serial.$error">
<VueGooglePlaces
api-key="api-key"
class="subheading"
:enable-geolocation="true"
types="(cities)"
@placechanged="onPlaceChanged"
>
<input
ref="address"
float-label="Serial Number"
type="text"
v-model="address"
clearable
@blur="$v.serial.$touch"
/>
</VueGooglePlaces>
<vue-google-autocomplete
id="map"
class="form-control"
placeholder="Start typing"
v-on:placechanged="getAddressData"
></vue-google-autocomplete>
</q-field>
</q-item-main>
</q-item>
</template>
import VueGoogleAutocomplete from "vue-google-autocomplete";
import Vue from "vue";
export default {
name: "ScanBarcodePage",
components: {
"page-title": PageTitleComponent
},
mounted() {
if (this.$refs.address) {
this.$refs.address.focus();
}
},
data() {
return {
address: "",
serial: "",
places: []
};
},
methods: {
getAddressData: function(addressData, placeResultData, id) {
this.address = addressData.formatted_address;
},
onPlaceChanged: function(addressData, placeResultData, id) {
this.address = addressData.formatted_address;
}
}
}
我已经添加了上面的示例代码。我没有收到任何错误,但是当我在文本字段中键入一些字符时,它会显示位置列表,但我不能 select 任何一个。但同样的插件在浏览器上运行良好。
我的猜测是这些库由于两次调用地图 API 而相互冲突。尝试只实施其中一个来排除这种情况。
以下是我通过 Apache cordova 在混合应用程序中使 vue-google-autocomplete 在移动设备 (Android) 上工作的方法。
首先在这里介绍一些上下文,我通过 vue-cli-plugin-cordova 创建了一个 vue + cordova 应用程序。
在 /public/index.html
中,添加带有 valid API 键的地图 API 脚本 <head>
元素:
<script src="https://maps.googleapis.com/maps/api/js?key=KEY&libraries=places"></script>
然后转到 /src/App.vue
并将所有内容替换为图书馆文档 example:
中的代码
<template>
<div>
<h2>Your Address</h2>
<vue-google-autocomplete
ref="address"
id="map"
classname="form-control"
placeholder="Please type your address"
v-on:placechanged="getAddressData"
country="sg"
>
</vue-google-autocomplete>
</div>
</template>
<script>
import VueGoogleAutocomplete from 'vue-google-autocomplete'
export default {
components: { VueGoogleAutocomplete },
data: function () {
return {
address: ''
}
},
mounted() {
// To demonstrate functionality of exposed component functions
// Here we make focus on the user input
this.$refs.address.focus();
},
methods: {
/**
* When the location found
* @param {Object} addressData Data of the found location
* @param {Object} placeResultData PlaceResult object
* @param {String} id Input container ID
*/
getAddressData: function (addressData, placeResultData, id) {
this.address = addressData;
}
}
}
</script>
然后插入设备(或模拟器)和 运行 您的应用程序。您应该能够 select 从自动完成预测中毫无问题地找到一个地方。
如果仍然不能,请检查您的 API 密钥是否确实有效,即它必须受到适当的(未)限制并且属于有计费的 Cloud 项目,JavaScript API & Places API 已启用。 Google's guide here 中的更多信息。
真心希望对您有所帮助!
我正在尝试在混合移动应用程序中使用 vue js 实现对 google 地点的搜索。搜索功能工作正常,但当我点击地点列表时,我无法 select 任何一个。
我用过vue-google-places library and vue-google-autocomplete库。在这两个库中,我都面临着同样的问题。
<template>
<q-item>
<q-item-main>
<q-field :error="$v.serial.$error">
<VueGooglePlaces
api-key="api-key"
class="subheading"
:enable-geolocation="true"
types="(cities)"
@placechanged="onPlaceChanged"
>
<input
ref="address"
float-label="Serial Number"
type="text"
v-model="address"
clearable
@blur="$v.serial.$touch"
/>
</VueGooglePlaces>
<vue-google-autocomplete
id="map"
class="form-control"
placeholder="Start typing"
v-on:placechanged="getAddressData"
></vue-google-autocomplete>
</q-field>
</q-item-main>
</q-item>
</template>
import VueGoogleAutocomplete from "vue-google-autocomplete";
import Vue from "vue";
export default {
name: "ScanBarcodePage",
components: {
"page-title": PageTitleComponent
},
mounted() {
if (this.$refs.address) {
this.$refs.address.focus();
}
},
data() {
return {
address: "",
serial: "",
places: []
};
},
methods: {
getAddressData: function(addressData, placeResultData, id) {
this.address = addressData.formatted_address;
},
onPlaceChanged: function(addressData, placeResultData, id) {
this.address = addressData.formatted_address;
}
}
}
我已经添加了上面的示例代码。我没有收到任何错误,但是当我在文本字段中键入一些字符时,它会显示位置列表,但我不能 select 任何一个。但同样的插件在浏览器上运行良好。
我的猜测是这些库由于两次调用地图 API 而相互冲突。尝试只实施其中一个来排除这种情况。
以下是我通过 Apache cordova 在混合应用程序中使 vue-google-autocomplete 在移动设备 (Android) 上工作的方法。
首先在这里介绍一些上下文,我通过 vue-cli-plugin-cordova 创建了一个 vue + cordova 应用程序。
在 /public/index.html
中,添加带有 valid API 键的地图 API 脚本 <head>
元素:
<script src="https://maps.googleapis.com/maps/api/js?key=KEY&libraries=places"></script>
然后转到 /src/App.vue
并将所有内容替换为图书馆文档 example:
<template>
<div>
<h2>Your Address</h2>
<vue-google-autocomplete
ref="address"
id="map"
classname="form-control"
placeholder="Please type your address"
v-on:placechanged="getAddressData"
country="sg"
>
</vue-google-autocomplete>
</div>
</template>
<script>
import VueGoogleAutocomplete from 'vue-google-autocomplete'
export default {
components: { VueGoogleAutocomplete },
data: function () {
return {
address: ''
}
},
mounted() {
// To demonstrate functionality of exposed component functions
// Here we make focus on the user input
this.$refs.address.focus();
},
methods: {
/**
* When the location found
* @param {Object} addressData Data of the found location
* @param {Object} placeResultData PlaceResult object
* @param {String} id Input container ID
*/
getAddressData: function (addressData, placeResultData, id) {
this.address = addressData;
}
}
}
</script>
然后插入设备(或模拟器)和 运行 您的应用程序。您应该能够 select 从自动完成预测中毫无问题地找到一个地方。
如果仍然不能,请检查您的 API 密钥是否确实有效,即它必须受到适当的(未)限制并且属于有计费的 Cloud 项目,JavaScript API & Places API 已启用。 Google's guide here 中的更多信息。
真心希望对您有所帮助!