ar_location_view

Creator: coderz1093

Last updated:

Add to Cart

Description:

ar location view

ar_location_view #
Augmented reality for geolocation.
Inspired HDAugmentedReality
Demo #

Description #
ArLocationView is designed to used in areas with large concentration of static POIs.
Where primary goal is the visibility of all POIs.
Remark: Altitudes of POIs are disregarded
Features #

Automatic vertical stacking of annotations views
Tracks user movement and updates visible annotations
Fully customisable annotation view
Supports all rotations

Basic usage #
Look at the example
For iOs #
ArLocationView use device camera and location, add in Info.plist
<key>NSLocationWhenInUseUsageDescription</key>
<key>NSLocationUsageDescription</key>
<key>NSLocationAlwaysUsageDescription</key>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<key>NSCameraUsageDescription</key>
copied to clipboard

Add the following to your Podfile file:

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
'PERMISSION_CAMERA=1',
'PERMISSION_MICROPHONE=1',
'PERMISSION_LOCATION=1',
'PERMISSION_SENSORS=1',
]
end
# End of the permission_handler configuration
end
end
copied to clipboard
For Android #
Add permission in manifest.xml
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
copied to clipboard
Create class extend ArAnnotation
class Annotation extends ArAnnotation {
final AnnotationType type;

Annotation({required super.uid, required super.position, required this.type});
}
copied to clipboard
Create a widget for Annotation view for example

class AnnotationView extends StatelessWidget {
const AnnotationView({
Key? key,
required this.annotation,
}) : super(key: key);

final Annotation annotation;

@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),
color: Colors.white,
),
child: Row(
children: [
Expanded(
child: Container(
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(5),
bottomLeft: Radius.circular(5),
),
),
child: typeFactory(annotation.type),
),
),
Expanded(
flex: 2,
child: Padding(
padding: const EdgeInsets.all(4.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
annotation.type.toString().substring(15),
maxLines: 1,
style: const TextStyle(fontWeight: FontWeight.bold),
),
Text(
'${annotation.distanceFromUser.toInt()} m',
),
],
),
),
)
],
),
);
}

Widget typeFactory(AnnotationType type) {
IconData iconData = Icons.ac_unit_outlined;
Color color = Colors.teal;
switch (type) {
case AnnotationType.pharmacy:
iconData = Icons.local_pharmacy_outlined;
color = Colors.red;
break;
case AnnotationType.hotel:
iconData = Icons.hotel_outlined;
color = Colors.green;
break;
case AnnotationType.library:
iconData = Icons.library_add_outlined;
color = Colors.blue;
break;
}
return Icon(
iconData,
size: 40,
color: color,
);
}
}
copied to clipboard
License #
ArLocationView is released under the MIT license.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.